使用Cmake for iOS查找增强框架

时间:2017-08-29 05:02:18

标签: ios boost cmake

我将Boost构建为iOS的框架。这当前安装在Applications / Xcode.app / Contents / Developer / Library / Frameworks /中。

当我创建一个“手工生成”的XCode项目时,我使用这个框架没有问题。

我现在正尝试使用CMake生成XCode项目。我找到了这个有用的交叉编译工具链(https://github.com/cristeab/ios-cmake)。只要我不包括

,这就有效
find_package( Boost )

但是当上面一行添加到我的CMakeLists.txt文件中时,我得到一个“Boost_INCLUDE_DIR-NOTFOUND”

所以问题是:有没有人成功使用CMake和Boost for iOS?如果是这样的话,非常感谢任何有关如何处理它的帮助。

我发现另一个SO用户尝试在此处执行类似操作:How to find a iOS/mac OS X framework via Cmake

但除了使用“CMAKE_FRAMEWORK_PATH”之外,它没有提供太多细节。

所以非常感谢任何帮助。

...谢谢

2 个答案:

答案 0 :(得分:0)

find_package找不到为ios构建的增强功能(已在cmake 3.13和3.14上测试)

可以通过以下方式解决。

使用https://github.com/faithfracture/Apple-Boost-BuildScript

BOOST_ROOT设置为Apple-Boost-BuildScript/src/boost_x_xx_x

对于iOS:

set(Boost_INCLUDE_DIRS "${BOOST_ROOT}")
set(Boost_LIBRARIES "${BOOST_ROOT}/iphone-build/stage/lib/libboost_date_time.a")
set(Boost_LIBRARIES "${Boost_LIBRARIES};${BOOST_ROOT}/iphone-build/stage/lib/libboost_regex.a")
set(Boost_LIBRARIES "${Boost_LIBRARIES};${BOOST_ROOT}/iphone-build/stage/lib/libboost_system.a")

iOS模拟器:

set(Boost_INCLUDE_DIRS "${BOOST_ROOT}")
set(Boost_LIBRARIES "${BOOST_ROOT}/iphonesim-build/stage/lib/libboost_date_time.a")
set(Boost_LIBRARIES "${Boost_LIBRARIES};${BOOST_ROOT}/iphonesim-build/stage/lib/libboost_regex.a")
set(Boost_LIBRARIES "${Boost_LIBRARIES};${BOOST_ROOT}/iphonesim-build/stage/lib/libboost_system.a")

答案 1 :(得分:0)

我希望还不晚:) 我碰到几乎相同的问题,find_package总是抱怨找不到lib,即使搜索路径正确,请注意,Android NDK也存在类似的问题

对于ios,我建议:

  1. 通过HashSet启用boost调试,然后检查指定的路径是否正确,请参考此链接以获取更多信息 How can I get CMake to find my alternative Boost installation?

  2. 尝试使用set(Boost_DEBUG ON)而不是find_host_package,我在ios.cmake中找到了一些线索,可能会导致问题:

    find_package