使用CMake交叉编译包:如何设置链接器路径以查找编译器支持库?

时间:2016-02-08 19:51:08

标签: android c++ linux android-ndk cmake

我正在尝试在Linux x86-64主机上交叉编译Android的qhull库。我对CMake很新,但对其他构建系统工具很有经验。

根据我发现的所有建议,我已经设置了一个工具链文件,并且它已经用于其他几个软件包。然而,无论我尝试什么,似乎没有任何东西可以增加qh​​ull的一个或多个可执行程序的链接器路径。问题是它无法找到Android NDK的libsup ++。a,这是其编译器(GCC)的隐式依赖。如果我使用生成的链接命令并手动添加-L path_to_libsup ++。a ,则链接会成功。

在我的工具链文件中,我尝试的内容包括:

  • CMAKE_FIND_ROOT_PATH
  • link_directories()
  • CMAKE_EXE_LINKER_FLAGS

我认为CMakeLists.txt没有任何异常,至少在第一个失败点(user_eg3)方面。

如果可能的话,我宁愿不修补图书馆。我知道很多其他人在Android上使用它(这是点云库的依赖),所以我想我可能错过了一步。

BTW,我正在使用CMake v3.4.3,Android NDK r10e和qhull v7.2.0。

1 个答案:

答案 0 :(得分:1)

我找到了解决方法。

this post中,Florian提到CMake在内部将CMAKE_EXE_LINKER_FLAGS_INIT设置为$ ENV {LDFLAGS}。我发现如果我设置环境变量LDFLAGS = -L path_to_libsup ++。a ,它会被传递给link命令,现在该命令成功。

我仍然想知道这个问题的正确CMake解决方案。或者,如果问题出在qhull上,那么也许有人可以偷看它的CMakeLists.txt(上面链接)并指出它做错了什么。