1

我正在使用需要 CGAL 库的 CLION 使用 C++ 编写一个类项目,但我无法让该库与我的项目一起使用。

为简单起见,我们正试图让该库在它的仅标头配置中工作,但是当涉及到这种处理方式时,CGAL 的文档在细节上有点薄。在安装文档的这一部分中,我们被告知在某处提取 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})

任何帮助将不胜感激,我们已经为此苦苦挣扎了一段时间并且不知所措。提前致谢!

4

2 回答 2

0

我的猜测是你只是失踪了

find_package( CGAL)
if ( CGAL_FOUND )
  include( ${CGAL_USE_FILE} )

之后,您应该检查 CMAKE 变量 CGAL_DIR 是否指向您提取的 CGAL 目录,您应该没问题。

于 2018-05-22T06:52:43.283 回答
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 包管理器,所以很快就会完全不同。

于 2018-08-29T02:58:45.373 回答