2018년 3월 20일 화요일

mobile cross-platform 개발 환경 및 cmake

2014. 2. 6. 11:05

모바일 개발을 위해서 cocos2d-x를 사용하다가 보니 기존에 윈도우에서 만들어둔 library(.h, .cpp) 파일들을 그대로 사용하는 경우가 많다.

android와 iOS의 경우는 기본적으로 unix 시스템에서 출발을 했고 , 서로 환경에서 각각 작동되는 code를 만들려면 bsd 기반의 함수들을 이용하면 문제가 없다. ( 이것은 windows의 경우도 동일하다.)

windows에서 테스트를 완료하고 바로 mac으로 파일을 옮겨서 컴파일을 하면

  • iOS에는 없는 함수도 있고
  • include 해야 되는 헤더파일도 다른경우가 있고
  • 맥의 xCode는 VC보다 '엄격'한 컴파일러의 체크가 이루어지기에 오류 또는 경고가 발생되는 코드가 많다. 
 
그래서 mac으로 옮기기 전에 windows환경에서 미리 컴파일하고 테스트를 해보려고 cygwin 환경에 프로젝트를 셋팅해서 단위 테스트하는 방법을 사용하기로 했다.  
  • Cygwin의  경우 Windows에서 Linux환경을 그대로 사용할 수 있기에 bsd 함수들을 테스트하고  빌드하기에는 최적이다.

cocos2d-x의 프로젝트는 플랫폼 별로 프로젝트 환경을 만들어 주기 때문에 cygwin(linux)에서 빌드를 해도 된다. 
이때 테스트를 위한 라이브러리( .h, .cpp) 파일을 해당 프로젝트에 넣어 작업을 하면 되지만 , 단위 테스트를 위해서는 작은 프로젝트를 만들어 주어서 코딩을 해 주는 것이 편하다. 
  
과거에는 Makefile를 직접 구성했지만 요즘은 cmake처럼 Makefile을 만들어주는 프로그램이 있기에 이러한 작업을 쉽게 할 수 있다.  


cmake를 사용하기 위해서는 아래의 절차를 따라야 한다.  
  1. Cygwin에서 cmake라고 쳐서 , 본인인 cmake를 설치 했는지 확인 
  2. CMakeLists.txt 파일을 작성해서 Makefile을 만들기위한 환경설정 파일 작성
  3. cmake 실행  ( cmake ./  이라고 치면 실행됨)
  4. Makefile 만들어 졌는지 확인하고 make를 이용해서 빌드
  5. 실행파일 확인하고 , 실행 

1. cmake 설치 확인 
cmake라고 치면 아래와 같은 내용들이 표시된다. 
cmake version 2.8.7
Usage
  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>
 
....... 
....... 
 
그럼 설치 완료 
 
2. CMakeLists.txt 파일 작성 
cmake 설정 파일명은 다르게 해도 되지만 편하게 위와 같은 이름으로 하면 기본 파일명이다.  
그 내용은 아래와 같이 하면 된다. 
 
---------- 여기 아래부터 --------------------------------------------------------  
cmake_minimum_required(VERSION 2.6)
PROJECT(bsdRushmoProject)

ADD_EXECUTABLE(a main.cpp lib/lib1.cpp lib/lib2.cpp ) 
---------- 여기 위까지 --------------------------------------------------------   
 
- a : 실행파일의 이름 , 본인이 원하는 것으로 지정
- main.cpp : main() 함수가 들어 있는 .cpp파일명, 본인이 원하는 파일 명으로 하면 된다.
- lib/lib1.cpp : lib는 폴더의 이름 lib1.cpp는 거기에 들어 있는 .cpp파일의 이름을 넣으면 된다. 
   
3. cmake 실행 
cmake 를 실행할 때는 아래처럼  
cmake ./  
그러면 자동으로 CMakeLists.txt 을 찾아서 환경 설정을 진행한다. 
 
아래처럼 나오면 정상 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/XXXXX/XXXXXX ..... 
 
   
4. Makefile 확인 및 make 실행 
폴더에 Makefile이 생성이 되어 있는지 확인하고 
아래 명령어를 친다.  
make  

정상적으로 되었다면 아래와 같이 출력된다.
$ make
Scanning dependencies of target a
[ 20%] Building CXX object CMakeFiles/a.dir/main.cpp.o
Linking CXX executable a.exe
[100%] Built target a 
Cygwin의 경우 a.exe 라는 파일명으로 생성이 되는데 
./a.exe  
라고 쳐서 실행을 시키면 된다.  

복잡하게 CMakeLists.txt를 구성하는 방법은 인터넷에 많이 있지만,
간단하게 단위 테스트를 하기 위해서는 이렇게 구성해도 아무 문제가 없다.

static library, 또는 windows의 DLL처럼 공유되는 라이브러리를 구성하는 방법은 아래의  포스트들을 참고하기 바란다.
http://blog.naver.com/imisehi/150076922823 : library 포함하는 cmake 설정법
http://blog.naver.com/xogml_blog/130138049704  : library 관련 개념 소개등등




댓글 없음:

댓글 쓰기