使用CMake为iOS编译dylib文件

时间:2017-01-19 08:44:41

标签: c++ objective-c xcode cmake clion

我在CLion IDE中有一个C ++项目,我几个月前就开始工作了。我从来没有想过太多,但事实证明,代码对于我目前正在Objective-C中工作的iOS应用程序非常有用。我想使用Objective-C ++与C ++类进行交互,而不是重新编码Obj-C中的所有内容。

我已经使用cmake中的.dylib将我的代码从CLion编译成add_library(CalcOS SHARED ${SOURCE_FILES})文件。这是我遇到问题的地方,因为我从Xcode收到以下警告:

URGENT: building for iOS simulator, but linking against dylib (/Users/me/Documents/old/Developer/Calc/Calc/libCalcOS.dylib) built for OSX. Note: This will be an error in the future.

构建应用程序并运行它会导致应用程序启动崩溃,并出现以下错误:

dyld: Library not loaded: @rpath/libCalcOS.dylib Referenced from: /Users/me/Library/Developer/CoreSimulator/Devices/80285643-3064-4F0A-B921-90060F6A998F/data/Containers/Bundle/Application/B6BAAB1D-ABF4-4D0D-82CD-CFD243DEE622/Calc.app/Calc Reason: image not found

我认为我应该为.dylib设备编译arm64文件,以便它可以与iOS一起使用,但是我不知道如何在CLion或CMake中实现这一点。任何指针都将不胜感激!

1 个答案:

答案 0 :(得分:1)

下载此工具链:https://github.com/cristeab/ios-cmake

在你的图书馆的CMakeLists.txt中,设置以下内容以构建arm7:

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -arch armv7")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -arch armv7")

然后你可以通过运行来使用它:

cmake -DCMAKE_TOOLCHAIN_FILE=path_to_the_toolchain