Compiling for iOS with CMake

前端 未结 4 792
难免孤独
难免孤独 2020-12-24 14:49

I\'ve compiled a C++ static library by using CMake as my building tool and I want to link it to my iOS app.
I created a simple \'Empty\' application in Xcode and linked

相关标签:
4条回答
  • 2020-12-24 14:58

    I've been using an updated version of the iOS CMake toolchain for quite a while: https://github.com/leetal/ios-cmake

    This creates an Xcode project which you can drag into an existing iOS project if necessary.

    I wrote a blog post with more details: https://blog.tomtasche.at/2019/05/how-to-include-cmake-project-in-xcode.html

    0 讨论(0)
  • 2020-12-24 15:05

    By following cmake-toolchains documentation I did like below:

    cmake -G Xcode -B build \
        -DCMAKE_SYSTEM_NAME=iOS \
        -DCMAKE_Swift_COMPILER_FORCED=true \
        -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0
    

    Note: That assignment CMAKE_OSX_DEPLOYMENT_TARGET=11.0 is not a mistake when targeting iOS.

    0 讨论(0)
  • 2020-12-24 15:10

    There is a second version of iOS.cmake located at:

    https://ceres-solver.googlesource.com

    Note: You may find that both versions of iOS.cmake will only build x86 versions of your project. CMake now sets CMAKE_OSX_SYSROOT to the (latest) Mac OS X SDK available on your system. You can fix this by modifying your copy of iOS.cmake to always set CMAKE_OSX_SYSROOT. You can do this by commenting out a couple of lines your copy of iOS.cmake:

    # -- Under CMake 3.4.2, CMAKE_OSX_SYSROOT is automatically defined to point to the latest Mac OS X SDK. --
    # -- So, the iOS SDK is never found.  Grab the correct CMAKE_OS_SYSROOT and ignore any prior setting.   --
    
    # If user did not specify the SDK root to use, then query xcodebuild for it.
    # if (NOT CMAKE_OSX_SYSROOT)
      execute_process(COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path
        OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
        ERROR_QUIET
        OUTPUT_STRIP_TRAILING_WHITESPACE)
      message (STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}")
      message (STATUS "be sure the previous line points to the correct SDK")
    # endif ( )
    
    0 讨论(0)
  • 2020-12-24 15:15

    Just use this toolchain file: http://code.google.com/p/ios-cmake/ and use it as

    cmake -DCMAKE_TOOLCHAIN_FILE=path_to_your_toolchain_file
    

    Then, in CMakeLists.txt:

    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch armv7")
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch armv7")
    
    0 讨论(0)
提交回复
热议问题