mev*_*ron 5 c++ boost cmake point-cloud-library
我有一个关于FIND_PACKAGECMake 函数的快速问题。我有一个利用点云库 (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)
Run Code Online (Sandbox Code Playgroud)
我的项目使用 Boost.program_options 库,而 PCL 需要其他几个库。当FIND_PACKAGE(PCL ...)运行时,它会覆盖前${Boost_LIBRARIES}与自己需要的库文件。我想出了一个解决方法来保存我的项目所需的 Boost 库,然后找到 PCL 包。
我对 CMake 大师的问题是否有更好的方法来处理 CMake 中的此类事情?或者,这可能是 FindBoost.cmake 或 FindPCL.cmake 模块中的一个错误?
Boost 的查找包使用您选择的组件的库填充局部变量 (Boost_LIBRARIES)。拨打电话绝对安全
find_package(Boost REQUIRED COMPONENTS program_options)
Run Code Online (Sandbox Code Playgroud)
(或其他任何东西)就在您想要使用它之前。这将确保为您的可执行文件正确填充变量。
一些查找模块采用使用自定义结果填充局部变量以在该目录/可执行文件中使用的方法,同时将大部分繁重的工作推迟到全局缓存变量。Qt 和 6.0 中的新 VTK 配置代码执行相同的操作,因此可以想象您可以拥有多个不同版本的 Boost_LIBRARIES,这些版本取决于当前范围内最新的 find_package 调用。
| 归档时间: |
|
| 查看次数: |
3988 次 |
| 最近记录: |