How to set up CMake to build a library for the iPhone

后端 未结 2 1128
执笔经年
执笔经年 2021-02-03 12:07

I\'m trying to use CMake to generate an Xcode configuration for the iPhone by manually setting certain attributes. (Is this even the right way to go about this?) My CMake file l

相关标签:
2条回答
  • 2021-02-03 12:32

    This info may also be useful:

    This project provides a simple iOS toolchain file that may be used with CMake to build libraries and setup applications. A couple of sample projects are included.

    http://code.google.com/p/ios-cmake/

    0 讨论(0)
  • 2021-02-03 12:46

    As far as I can tell, there are two ways. The one most likely, you are nearly there, is to use CMAKE_OSX_SYSROOT to set the XCode SDKROOT. There is also the variable CMAKE_OSX_ARCHITECTURES, which maps to ARCHS in XCode.

    The alternative is to use CMake's cross compiling support. I've not used it for the iphone, but I have done so for other ARM processors. You need to set up a toolchain file that would look something like this:

    set(CMAKE_SYSTEM_NAME Generic)
    set(CMAKE_SYSTEM_VERSION 1)
    set(CMAKE_SYSTEM_PROCESSOR arm-elf)
    set(CMAKE_C_COMPILER /path/to/complier/bin/arm-elf-gcc)
    set(CMAKE_FIND_ROOT_PATH /path/to/compiler)
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    

    And then when you run cmake, set the CMAKE_TOOLCHAIN_FILE variable to the name of your toolchain file. Or if you only compile to one architecture, you can hard-code the value in the CMakeLists.txt file. But I imagine you would need to cross compile for the iphone simulator and for the actual iphone itself, right? So you would run one of these, probably having a couple of build variants:

    cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-sim.cmake .
    cmake -DCMAKE_TOOLCHAIN_FILE=/path/to/my/iphone-real.cmake .
    

    Where the sim/real files define the environment for the simulator or real iphone compiler tools.

    Some other links that may help are this bug report and this mailing list conversation.

    0 讨论(0)
提交回复
热议问题