在同一项目中使用 CGAL 和 PCL

Use CGAL and PCL in same project

本文关键字:CGAL PCL 项目      更新时间:2023-10-16

我正在尝试在同一项目中使用CGAL和PCL。PCL 和 CGAL 都应该在我的计算机上正确安装,因为这些示例有效。 我创建了一个引用 PCL 和 CGAL 的 CMakeList.txt 文件,我可以在没有 CMake GUI 显示任何问题的情况下对其进行配置,但是当我打开项目.sln CGAL 包含有错误时 例如:无法打开包含文件:"CGAL/Simple_cartesian.h":没有此类文件或目录 所有 PCL 都包括工作正常。 如果我从 CMakeList 中删除所有 PCL 引用.txt则 CGAL 包括工作。我怀疑我的CMakeList.txt做错了什么。
有谁知道我做错了什么?

谢谢!

下面是我的CMakeList.txt

cmake_minimum_required(VERSION 3.1...3.15)
project(PC_Svr2)

find_package(CGAL QUIET)
if ( CGAL_FOUND )
# create a target per cppfile
file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
foreach(cppfile ${cppfiles})
create_single_source_cgal_program( "${cppfile}" )
endforeach()
else()
message(STATUS "This program requires the CGAL library, and will not be compiled.")
endif()
find_package(PCL 1.2 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable (PC_Svr2 cloud_viewer.cpp)

target_link_libraries (PC_Svr2 ${PCL_LIBRARIES})

message("PCL_IO_LIBRARIES - ${PCL_IO_LIBRARIES}"(

file(GLOB cppfiles RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
foreach(cppfile ${cppfiles})
create_single_source_cgal_program( "${cppfile}" )
endforeach()

那就是从CMAKE_CURRENT_SOURCE_DIR中的每个 cpp 文件创建一个目标。我不认为这是你想要的。 如果我理解正确,您的代码cloud_viewer.cpp,那么您应该删除循环并仅与 cgal 链接target_link_libraries:target_link_libraries(PCS_Svr2 CGAL::CGAL ${PCL_LIBRARIES})

您可以查看该页面以了解详细信息。