【发布时间】:2019-06-24 13:48:37
【问题描述】:
我正在使用 pcl 编写一个简单的示例代码,就像链接一样 http://pointclouds.org/documentation/tutorials/writing_pcd.php.
即使我点击了链接,Visual Studio 也会报告链接错误。 原因是 pcl 依赖于 boost 库而 cmake 不 将 boost 库添加到 Visual Studio 的项目设置文件中。 如果我使用以下行添加 boost 库,一切都会好起来的。
target_link_libraries(程序名 ${Boost_LIBRARIES})
为什么 CMake 不处理这个?有没有更好的解决方案?
CMake:3.13.2,
视觉工作室:2017 年社区
PCL:PCL-1.9.1-AllInOne-msvc2017-win64.exe
编辑: CMakeLists.txt
cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(MY_GRAND_PROJECT)
set(Boost_DEBUG ON)
set(Boost_USE_STATIC_LIBS OFF)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost 1.45.0)
find_package(PCL 1.9.1 REQUIRED COMPONENTS common io)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(pcd_write_test pcd_write.cpp)
target_link_libraries(pcd_write_test ${PCL_COMMON_LIBRARIES} ${PCL_IO_LIBRARIES} ${Boost_LIBRARIES})
【问题讨论】:
-
奇怪。在他们的仓库中,在PCLConfig.cmake 的末尾,他们将
${BOOST_LIBRARIES}(之前分配给${Boost_LIBRARIES})添加到PCL_LIBRARIES变量中。您可以在 PCL 安装中检查该文件。 -
顺便说一句,在 Stack Overflow 上,我们倾向于将代码 放在问题帖子中 本身。即使您完全遵循现有文档,最好将代码复制粘贴到问题帖子中。因此,即使文档已更改或消失,问题也会变得有效。 (你可能在代码中有一些小的更正,我们不知道)。当然,仅
CMakeLists.txt就足以说明问题,.cpp代码无关。 -
谢谢。从您的评论中,我了解到第三方库已附加到 PCL_LIBRARIES。在 CMakeLists.txt 中,我只使用了 pcl 库中的两个组件。 @Tsyvarev你可以写一个答案。我会接受答案。
标签: visual-studio boost cmake