在Conda环境中使用CMake进行构建

时间:2018-08-23 18:16:14

标签: boost cmake linker anaconda conda

我有一台资源受限的实验室机器(不受我控制),基本上只允许我写入外部硬盘。

我需要使用boost和pcl编译我的班级项目。我的程序一直是在外部硬盘驱动器内创建一个conda环境,然后print_r(get_loaded_extensions());

这对安装软件包有效。需要编译时,请使用以下CMake工具链文件:

conda install -c conda-forge boost pcl

这将在运行cmake和make时完成编译工作。当您尝试链接时问题就开始了。我得到:

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION 1)

SET(CMAKE_C_COMPILER   /XXX/bin/clang)
SET(CMAKE_CXX_COMPILER /XXX/bin/clang++)

SET(CMAKE_FIND_ROOT_PATH  /YYY/conda/envs/thesis-env /XXX/llvm)

SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)

SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

我的理解是pcl的boost依赖关系在链接期间没有得到正确解决。有什么办法可以帮助CMake解决此问题?

1 个答案:

答案 0 :(得分:0)

您需要执行以下操作:将-rpath-link=<directory-containing-boost-libs>添加到链接行。您也可以使用patchelf之类的名称在libpcl_common.so中将该目录添加为RPATH条目。