在同一项目中使用 CGAL 和 PCL

Use CGAL and PCL in same project

我正在尝试在同一个项目中使用 CGAL 和 PCL。 PCL 和 CGAL 都应该正确安装在我的计算机上,因为这些示例有效。 我创建了一个 CMakeList.txt 文件,它引用了 PCL 和 CGAL 我能够在没有 CMake GUI 显示任何问题的情况下配置它,但是当我打开项目 .sln 时,CGAL 包含有错误 例如:无法打开包含文件:'CGAL/Simple_cartesian.h':没有那个文件或目录 所有 PCL 都可以正常工作。 如果我从 CMakeList.txt 中删除所有 PCL 引用,那么 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})

消息("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 中,那么你应该删除循环,只需要 link 和 cgal 以及你的 target_link_libraries: target_link_libraries(PCS_Svr2 CGAL::CGAL ${PCL_LIBRARIES})

您可以查看that page了解详情。