【发布时间】:2016-02-08 19:51:07
【问题描述】:
我正在尝试在 Linux x86-64 主机上交叉编译适用于 Android 的 qhull 库。我对 CMake 还很陌生,但对其他构建系统工具颇有经验。
根据我找到的所有建议,我已经设置了一个工具链文件,并且它适用于其他几个包。然而,无论我尝试什么,似乎都没有增加 qhull 的一个或多个可执行程序的链接器路径。问题是它找不到 Android NDK 的 libsup++.a,这是其编译器 (GCC) 的隐式依赖项。如果我使用生成的链接命令并手动添加-Lpath_to_libsup++.a,则链接成功。
在我的工具链文件中,我尝试过的有:
- CMAKE_FIND_ROOT_PATH
- link_directories()
- CMAKE_EXE_LINKER_FLAGS
我看不出它的 CMakeLists.txt 有什么不寻常之处,至少在第一个故障点 (user_eg3) 方面。
如果可能的话,我不想修补库。我知道很多其他人在 Android 上使用它(它是点云库的依赖项),所以我想我可能错过了一步。
顺便说一句,我正在使用 CMake v3.4.3、Android NDK r10e 和 qhull v7.2.0。
【问题讨论】:
-
将所需库添加到工具链文件中的
CMAKE_EXE_LINKER_FLAGS变量没有帮助?奇怪的。作为最后的手段,您可以将CMAKE_CXX_COMPILER(或CMAKE_C_COMPILER)设置为指向您的脚本,该脚本使用附加标志调用原始编译器。 -
否,在我的工具链文件中设置 CMAKE_EXE_LINKER_FLAGS 不会影响此命令。我也觉得很奇怪。我想也许包的 CMakeLists.txt 以某种方式覆盖了它,但我没有注意到它在做任何类似的事情。我正在设置 CMAKE_CXX_COMPILER,但你是说我也可以在该调用中添加标志?
标签: android c++ linux android-ndk cmake