【发布时间】:2013-11-12 07:01:07
【问题描述】:
我有一个关于 CMake 中的 FIND_PACKAGE 函数的快速问题。我有一个利用点云库(PCL)的项目。 PCL 依赖于 Boost,我的项目也是如此。所以,在我的 CMakeLists.txt 的顶部,我有以下内容:
FIND_PACKAGE(Boost REQUIRED COMPONENTS program_options)
# Preserve project Boost required libraries
SET(Boost_PROJECT_LIBRARIES ${Boost_LIBRARIES})
FIND_PACKAGE(PCL 1.6 REQUIRED COMPONENTS common search)
我的项目使用了 Boost.program_options 库,而 PCL 需要其他几个。当FIND_PACKAGE(PCL ...) 运行时,它会用自己需要的库覆盖以前的${Boost_LIBRARIES}。我想出了一个解决方法来保存我的项目所需的 Boost 库,然后找到 PCL 包。
我对 CMake 大师的问题是有没有更好的方法来处理 CMake 中的这类事情?或者,这可能是 FindBoost.cmake 或 FindPCL.cmake 模块中的错误吗?
【问题讨论】:
-
根据我的经验,不幸的是,这是您的最佳选择。除非您想修复
FindPCL.cmake模块。再说一次,只是我的经验。 -
如果没有
find_package-option 在两个find_package命令之间发生变化(比如设置BOOST_ROOT 或其他东西),那么我认为你是对的 - 这是一个错误 -
为什么不复制 FindPCL.cmake,“修复”它并使用 CMAKE_MODULE_PATH 让 cmake 找到您的版本?
标签: c++ boost cmake point-cloud-library