我正在使用CLION在C ++中开发一个类项目,它需要CGAL库,而我在使用该库来处理我的项目时遇到了麻烦。
为了简单起见,我们试图让库工作在它的头文件配置中,但是当谈到这种做法时,CGAL的文档有点细节。在this part of the installation documentation中,我们被告知要在某处提取CGAL库数据,并在我们的cmake文件中的变量中引用它。但是我们似乎无法在我们的项目中引用CGAL的任何标题 - 根本找不到任何目录或文件。
我们已经尝试过一段时间来解决这个问题,但我们并不知道在哪里查看或问题是什么,而且CGAL的文档没有多大帮助。下面我附上了我们的CMakeLists文件内容,我们做过一些非常错误的事情还是它应该是这样?
cmake_minimum_required(VERSION 3.9)
project(remeshing_project)
set(CMAKE_CXX_STANDARD 17)
if(MINGW OR CYGWIN)
add_definitions(-O3)
endif()
set(ENV{CGAL_DIR} S:/dev/cgal)
add_definitions(-DCGAL_DIR=$(CGAL_DIR))
#add_definitions(-DCGAL_LINKED_WITH_TBB)
#add_definitions(-DCGAL_USE_GMP)
#add_definitions(-DCGAL_USE_MPFR)
#add_definitions(-DCGAL_USE_ZLIB)
link_libraries(../external/glew_2_1_0/lib/Release/Win32/glew32s)
link_libraries(../external/glfw/lib-vc2015/glfw3)
link_libraries(../external/openGL/OPENGL32)
link_libraries(../external/openGL/glut32)
link_libraries(../external/openGL/glu32)
#Header Locations
set(HEADER_DIRS external/tinyply
external/libigl/include/
external/glfw/include/
external/eigen-git-mirror/
external/glew_2_1_0/include/
external/nanoflann/
external/spectra/
external/halfedge/
external/
$(CGAL_DIR)/)
add_executable(Remesher src/main.cpp external/halfedge/trimesh.cpp src/meshMetrics.cpp src/meshMetrics.h src/remeshingTools.cpp src/remeshingTools.h src/dataStructures.h)
target_include_directories(Remesher PRIVATE ${HEADER_DIRS})
任何帮助都会受到极大的赞赏,我们一直在反对这一点,并且不知所措。提前谢谢!
答案 0 :(得分:0)
我的猜测是你完全不知道
find_package( CGAL)
if ( CGAL_FOUND )
include( ${CGAL_USE_FILE} )
之后你应该检查CMAKE变量CGAL_DIR是否指向你提取的CGAL目录,你应该没问题。
答案 1 :(得分:0)
您需要:
find_package(CGAL QUIET COMPONENTS Core )
if(CGAL_FOUND)
#Don't let CGAL override flags
set(CGAL_DONT_OVERRIDE_CMAKE_FLAGS TRUE CACHE BOOL "Force CGAL to maintain CMAKE flags")
include(${CGAL_USE_FILE})
include(CGAL_CreateSingleSourceCGALProgram)
endif()
并且:
add_executable(Remesher src/main.cpp external/halfedge/trimesh.cpp src/meshMetrics.cpp src/meshMetrics.h src/remeshingTools.cpp src/remeshingTools.h src/dataStructures.h)
target_link_libraries(Remesher PRIVATE ${CGAL_LIBRARIES} ${CGAL_3RD_PARTY_LIBRARIES}
CGAL通常还需要Eigen和MPFR之类的东西。一个完整的工作示例在这里:
https://github.com/acgetchell/CDT-plusplus/releases/tag/0.1.8
我没有直接链接到我的CMakeLists.txt
,因为我正在转换为使用Conan package manager,因此很快就会有所不同。