我正试图在Linux x86-64主机上交叉编译Android的qhull库。我对CMake相当陌生,但对其他构建系统工具颇有经验。与CMake交叉编译包:如何设置链接器路径来查找编译器支持库?
根据我发现的所有建议,我已经设置了一个工具链文件,并且它可以用于其他几个软件包。然而,无论我尝试什么,似乎都没有增加一个或多个qhull可执行程序的链接器路径。问题在于它无法找到Android NDK的libsup ++。a,这是它的编译器(GCC)的隐式依赖。如果我使用生成的链接命令并手动添加-L path_to_libsup ++。a,则链接成功。
在我的工具链文件,当中的事情我已经试过有:
- CMAKE_FIND_ROOT_PATH
- link_directories()
- CMAKE_EXE_LINKER_FLAGS
我看不出有什么不寻常的至少相对于第一个故障点(user_eg3)而言是至少相对于第一个故障点(user_eg3)。
如果可能的话,我宁愿不修补库。我知道很多其他人在Android上使用它(这是点云库的依赖),所以我假设我可能错过了一个步骤。
顺便说一句,我正在使用CMake v3.4.3,Android NDK r10e和qhull v7.2.0。
将所需的库添加到工具链文件中的'CMAKE_EXE_LINKER_FLAGS'变量不会有帮助吗?奇怪。作为最后的手段,您可以设置指向脚本的'CMAKE_CXX_COMPILER'(或'CMAKE_C_COMPILER'),该脚本使用附加标志调用原始编译器。 – Tsyvarev
不,在我的工具链文件中设置CMAKE_EXE_LINKER_FLAGS不会影响此命令。我也觉得很奇怪。我想也许这个软件包的CMakeLists.txt在某种程度上压倒了这一点,但我没有注意到它做了这样的事情。我*是*设置CMAKE_CXX_COMPILER,但是你说我可以在该调用中添加标志,以及? –