在同一项目中使用 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了解详情。
我正在尝试在同一个项目中使用 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了解详情。