본문 바로가기

Cocos2d-x v3.17/환경 및 도구

[Cocos2d-x 환경 및 도구]Cmake 가이드북

반응형

    CMake 가이드북

    CMake 오픈소스 크로스 플랫폼 빌드 도구입니다.

    Cocos2d-x 오픈소스 크로스플랫폼 게임엔진이여서  두개의 툴들이 호환성이 좋습니다.

    Cocos2d-x 3.17버전부터 CMake 지원하여 전체 플랫폼 빌드를 수행할수 있습니다.

    지원하는 플랫폼은  Android (NDK)iOSmacOSLinuxWindowsVC++ compiler이다.

    또한 CMake 통해 엔진의 부분적 컴파일을 진행하여 새로운 빌드 프로세스에서 미리 컴파일  엔진 라이브러리를 재사용한다.


    기본개념

    CMake 사용하여 프로젝트를 빌드하기 전에 프로그램 빌드에대한 초보적인 지식이 있어야 합니다.

    예를들면 컴파일이 뭔지,링크가 뭔지,패키징이 뭔지 알아야하고 이것을 알면 CMake 사용하는데 많은 도움이 될겁니다.

     

    여기선 하나만 설명하겠습니다.

    Out-of-source Build?

    코드에서 최종적으로 생성할 실행가능파일을 만드는 과정에서 대량의 바이너리 파일이 생성됩니다.

    바이너리 파일과 코드는 동일한 디렉토리내에 있을때 원래코드파일과 섞여서 지저분해집니다.

    이럴때 Out-of-source Build 사용하여 바이너리 파일을 원래코드가 있는 디렉토리가 아닌곳에생성합니다.

    이렇게 하면 여러  빌드해도 코드파일이 있는 디렉토리는 깨끗하게 유지됩니다.


    자주 사용하는 빌드 옵션

    Cmake 에서 범용적으로 자주사용하는 옵션.

    -G 
    CMake 통해 특정한 IDE프로젝트의 구성파일을 생성하는것.

     작업은 IDE 종속됩니다.

     XCode 설치되지 않은 MacOS에서 CMake 대응되는 프로젝트를 생성할수 없습니다.

    • -GXcode  Xcode 프로젝트를 생성합니다.

    -GVisual Studio 15 2017  Visual Studio 2017 프로젝트를 생성


    CMAKE_BUILD_TYPE:
    빌드모드를 지정합니다.예를들면 Debug  Release같은것.

    디폴트로 Debug입니다.

    • -DCMAKE_BUILD_TYPE=Release Release모드로 프로젝트를 생성합니다.


    -H 코드 디렉터리를 지정하고 지정한 디렉터리는 CMakeLists.txt 파일이  있어야 합니다.


    -B  CMake 생성된 바이너리 파일을 저장할 디렉토리입니다.

    • -H..\cocos2d-x -Bmsvc_build 프로젝트를 빌드하기 위한 디렉토리를 상위디렉토리의 cocos2d-x 지정합니다. CMake 생성할 파일을 msvc_build디렉토리에 생성하라고 지정합니다.


    --build
    빌드 프로세스를 수행하고 CMake명령으로 생성된 빌드파일의 디렉토리를 지정합니다.

    • cmake --build ./msvc_build  빌드 프로세스를 수행할때 CMake 자동으로 대응되는 빌드툴을 선택합니다.


    Cocos2d-x에만 있는 옵션

    아래는 Cocos2d-x 있는 옵션과 사전 컴파일된 라이브러리를 사용하는것과 관련된것들이다.


    GEN_COCOS_PREBUILT 
    빌드 프로세스에서 미리 컴파일된 라이브러리를 생성할지 여부를 결정합니다.

    기본으론 생성하지 않습니다.

    설정을 켜서 생성하게 만들면 빌드 타겟 prebuilt 추가됩니다.

     빌드타겟을 실행하면 엔진의 일부분코드를 컴파일하여 라이브러리 파일을 생성하고 복사해서 미리 컴파일된 라이브러리 디렉토리에 붙여넣기 합니다.

    기본적으로 라이브러리는 엔진 디렉토리의 하위 디렉토리인 prebuilt 복사됩니다.


    • -DGEN_COCOS_PREBUILT=ON 빌드 타겟prebuilt  추가한다.이것은 실행라이브러리의 생성  복사에 사용된다.
    • USE_COCOS_PREBUILT 
      생성할 빌드 프로세스가 PREBUILT 라이브러리를 사용할건지 결정할수 있습니다.
      기본적으로 사용안함입니다.
      ON하면 자동으로 PreBuilt라이브러리를 검색하여 사용합니다.
      엔진은 기본적으로 엔진 디렉터리의 prebuilt폴더안에서 prebuilt라이브러리는 검색하여 사용합니다.
    • -DUSE_COCOS_PREBUILT=ON 자동으로 prebuilt 라이브러리 관련된 target  사용합니다.

    COCOS_PREBUILT_ROOT 
    prebuilt 라이브러리를 저장할 디렉토리를 지정합니다.
    선택옵션이며 Android플랫폼에서 사용되는 prebuilt 라이브러리는 필수옵션입니다.
    왜냐면 정상적인 상황에서 Android Studio 에서 CMake빌드 프로세스를 진행할떄 환경변수를 얻어올수 없어서 엔진의 루트디렉터리를 찾을수 없게 됩니다.

    • -DCOCOS_PREBUILT_ROOT=/Users/laptop/cocos-prebuilt prebuilt저장디렉토리를 설정함.


    플랫폼 빌드 예제

     

    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>


반응형