- -GXcode 는 Xcode의 프로젝트를 생성합니다.
- -DCMAKE_BUILD_TYPE=Release Release모드로 프로젝트를 생성합니다.
- -H..\cocos2d-x -Bmsvc_build 프로젝트를 빌드하기 위한 디렉토리를 상위디렉토리의 cocos2d-x로 지정합니다.또 CMake로 생성할 파일을 msvc_build디렉토리에 생성하라고 지정합니다.
- cmake --build ./msvc_build 이 빌드 프로세스를 수행할때 CMake는 자동으로 대응되는 빌드툴을 선택합니다.
- -DGEN_COCOS_PREBUILT=ON 빌드 타겟prebuilt 를 추가한다.이것은 실행라이브러리의 생성 및 복사에 사용된다.
- USE_COCOS_PREBUILT
생성할 빌드 프로세스가 PREBUILT 라이브러리를 사용할건지 결정할수 있습니다.
기본적으로 사용안함입니다.
ON하면 자동으로 PreBuilt라이브러리를 검색하여 사용합니다.
엔진은 기본적으로 엔진 디렉터리의 prebuilt폴더안에서 prebuilt라이브러리는 검색하여 사용합니다. - -DUSE_COCOS_PREBUILT=ON 자동으로 prebuilt와 라이브러리 관련된 target을 을 사용합니다.
- -DCOCOS_PREBUILT_ROOT=/Users/laptop/cocos-prebuilt prebuilt저장디렉토리를 설정함.
- CMake 홈페이지: cmake.org
- CMake 문서: cmake.org/documentation
- CMake FAQ: Wiki/CMake_FAQ
CMake 가이드북
CMake는 오픈소스 크로스 플랫폼 빌드 도구입니다.
Cocos2d-x는 오픈소스 크로스플랫폼 게임엔진이여서 위 두개의 툴들이 호환성이 좋습니다.
Cocos2d-x는 3.17버전부터 CMake를 지원하여 전체 플랫폼 빌드를 수행할수 있습니다.
지원하는 플랫폼은 Android (NDK)、iOS、macOS、Linux、Windows(VC++ compiler)이다.
또한 CMake를 통해 엔진의 부분적 컴파일을 진행하여 새로운 빌드 프로세스에서 미리 컴파일 된 엔진 라이브러리를 재사용한다.
기본개념
CMake를 사용하여 프로젝트를 빌드하기 전에 프로그램 빌드에대한 초보적인 지식이 있어야 합니다.
예를들면 컴파일이 뭔지,링크가 뭔지,패키징이 뭔지 알아야하고 이것을 알면 CMake를 사용하는데 많은 도움이 될겁니다.
여기선 하나만 설명하겠습니다.
Out-of-source Build란?
코드에서 최종적으로 생성할 실행가능파일을 만드는 과정에서 대량의 바이너리 파일이 생성됩니다.
바이너리 파일과 코드는 동일한 디렉토리내에 있을때 원래코드파일과 섞여서 지저분해집니다.
이럴때 Out-of-source Build를 사용하여 바이너리 파일을 원래코드가 있는 디렉토리가 아닌곳에생성합니다.
이렇게 하면 여러 번 빌드해도 코드파일이 있는 디렉토리는 깨끗하게 유지됩니다.
자주 사용하는 빌드 옵션
Cmake 에서 범용적으로 자주사용하는 옵션.
-G
CMake를 통해 특정한 IDE프로젝트의 구성파일을 생성하는것.
이 작업은 IDE에 종속됩니다.
즉 XCode가 설치되지 않은 MacOS에서 CMake로 대응되는 프로젝트를 생성할수 없습니다.
-GVisual Studio 15 2017 는 Visual Studio 2017 프로젝트를 생성
CMAKE_BUILD_TYPE:
빌드모드를 지정합니다.예를들면 Debug 및 Release같은것.
디폴트로 Debug입니다.
-H는 코드 디렉터리를 지정하고 지정한 디렉터리는 CMakeLists.txt 파일이 꼭 있어야 합니다.
-B 는 CMake로 생성된 바이너리 파일을 저장할 디렉토리입니다.
--build
빌드 프로세스를 수행하고 CMake명령으로 생성된 빌드파일의 디렉토리를 지정합니다.
Cocos2d-x에만 있는 옵션
아래는 Cocos2d-x만 있는 옵션과 사전 컴파일된 라이브러리를 사용하는것과 관련된것들이다.
GEN_COCOS_PREBUILT
빌드 프로세스에서 미리 컴파일된 라이브러리를 생성할지 여부를 결정합니다.
기본으론 생성하지 않습니다.
설정을 켜서 생성하게 만들면 빌드 타겟 prebuilt가 추가됩니다.
이 빌드타겟을 실행하면 엔진의 일부분코드를 컴파일하여 라이브러리 파일을 생성하고 복사해서 미리 컴파일된 라이브러리 디렉토리에 붙여넣기 합니다.
기본적으로 라이브러리는 엔진 디렉토리의 하위 디렉토리인 prebuilt에 복사됩니다.
COCOS_PREBUILT_ROOT
prebuilt 라이브러리를 저장할 디렉토리를 지정합니다.
선택옵션이며 Android플랫폼에서 사용되는 prebuilt 라이브러리는 필수옵션입니다.
왜냐면 정상적인 상황에서 Android Studio 에서 CMake빌드 프로세스를 진행할떄 환경변수를 얻어올수 없어서 엔진의 루트디렉터리를 찾을수 없게 됩니다.
플랫폼 빌드 예제
Linux
cd cocos2d-x
mkdir linux-build && cd linux-build
cmake ..
make -j 4
make -j 명령을 수행하기 전에 make help를 수행하여 모든 빌드타겟을 확인할수 있습니다. make <target>을 사용하여 특정한 타겟을 빌드하세요.
macOS
cd cocos2d-x
mkdir mac-build && cd mac-build
cmake .. -GXcode
open Cocos2d-x.xcodeproj
maxOS에서 cmake .. -GXcode 를 사용하면 기본적으로 macOS프로젝트가 생성됩니다.
IOS프로젝트와 macOS프로젝트는 동시에 하나의 XCode프로젝트에 생성할수 없습니다.
iOS
cd cocos2d-x
mkdir ios-build && cd ios-build
cmake .. -GXcode -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake
open Cocos2d-x.xcodeproj
기본적으론 ios기기의 빌드를 합니다.
가상기기에서 실행하고자 하면 아래와 같은 매개변수를 추가해야 합니다.
DIOS_PLATFORM=SIMULATOR 혹은 -DIOS_PLATFORM=SIMULATOR64。
Android
기본 빌드구성은 Android에서 오랫동안 사용된 ndk-build 의 c++부분입니다.
CMake로 빌드하기전에 먼저 Gradle구성에서 PROP_NDK_MODE 속성을 cmake로 변경하고 gradle구성을 동기화하세요.
그럼 외부 빌드 스크립트가 Android.mk 에서 CMakeLists.txt로 바뀐걸 확인할수 있습니다.
# android native code build type
# none, native code will never be compiled.
# cmake, native code will be compiled by CMakeLists.txt
# ndk-build, native code will be compiled by Android.mk
PROP_BUILD_TYPE=ndk-build
만약 Android Studio에서 prebuilt라이브러리를 사용하고자 하거나 prebuilt 디렉토리를 설정하고 싶을땐 prebuilt 라이브러리에 대한 가이드글과 build.gradle 내의 주석을 보십시오.
Windows
cd cocos2d-x
mkdir win32-build && cd win32-build
cmake .. -G"Visual Studio 15 2017"
위의 명령은 CMake로 Cocos2d-x 테스트 프로젝트를 Visual Studio 2017 환경에서 생성하는겁니다.
생성이 된 후에 파일탐색기에서 cocos2d-x/win32-build 디렉토리를 찾아서 Cocos2d-x.sln 파일을 엽니다.
그다음 cpp-tests를 시작프로젝트로 설정하고 컴파일하면 정상적으로 실행이 됩니다.
혹은 Visual Studio 2017 가 이미 CMake프로세스를 직접적으로 지원하고 있기 때문에 곧바로 사용해도 됩니다.
자세한것은 CMake 문서를 확인하세요.
Prebuilt 라이브러리 예제
엔진의 prebuilt 라이브러리를 사용하면 엔진코드를 다시 빌드하는일을 막아줘서 엔진부분의 코드를 컴파일하는 시간을 0으로 만들어 줍니다.
이렇게 해서 프로젝트 빌드시간을 줄이는겁니다.
아래예제는 c++프로젝트를 사용하여 prebuilt라이브러리를 생성하고 다른 c++프로젝트에서 사용하는것을 보여줍니다.
GEN_COCOS_PREBUILT 옵션을 키고 prebuilt라이브러리를 생성합니다
cocos new -l cpp -p my.pack.app1 test_app1
mkdir app1_build && cd app1_build
cmake ../test_app1
-DGEN_COCOS_PREBUILT=ON
make prebuilt
GEN_COCOS_PREBUILT 옵션을 끄고 USE_COCOS_PREBUILT 옵션을 켜서 다른 프로젝트에서 prebuilt를 사용할거라고 말해줍니다.
cmake ../test_app1 -DGEN_COCOS_PREBUILT=OFF -DUSE_COCOS_PREBUILT=ON
make TemplateCpp
open bin/TemplateCpp.app
바로 SE_COCOS_PREBUILT 옵션을 키고 새로운 프로젝트에서 생성된 prebuilt라이브러리를 사용합니다.
cocos new -l cpp -p my.pack.app2 test_app2
mkdir app2_build && cd app2_build
cmake ../test_app2
-DUSE_COCOS_PREBUILT=ON
make TemplateCpp
open bin/TemplateCpp.app
CMake 참조
출처: <http://cocos2d-x.org/docs/cocos2d-x/zh/installation/CMake-Guide.html>
'Cocos2d-x v3.17 > 환경 및 도구' 카테고리의 다른 글
[Cocos2d-x 환경 및 도구]정적 라이브러리 사용 (0) | 2018.08.11 |
---|---|
[Cocos2d-x 환경 및 도구]Cocos 명령줄 (0) | 2018.08.11 |
[Cocos2d-x 환경 및 도구]개발 환경 구축 - Windows 플랫폼 (0) | 2018.08.11 |
[Cocos2d-x 환경 및 도구]개발환경 구축 - Android 플랫폼 (0) | 2018.08.11 |
[Cocos2d-x 환경 및 도구]환경구축 (0) | 2018.08.11 |