CLION中配置CGAL 4.12头文件模式失败,请求技术支持
排查CGAL头文件找不到的CMake配置问题
我来帮你梳理下这个配置里的问题,几个小细节没处理对,导致CLion找不到CGAL的头文件:
1. 变量引用语法错误
你用了$(CGAL_DIR)来调用变量,但CMake里的变量引用格式是${CGAL_DIR},$()是shell命令的写法,CMake会解析错误,根本拿不到正确的CGAL路径。
2. CGAL头文件路径指向错误
CGAL的头文件都存放在${CGAL_DIR}/include子目录里,你直接把CGAL的根目录${CGAL_DIR}加到头文件搜索路径里,CMake自然找不到目标头文件。
3. 没必要用环境变量设置CGAL路径
set(ENV{CGAL_DIR} S:/dev/cgal)这种方式容易出现作用域问题,直接用CMake变量存储路径会更可靠。
修复后的完整CMakeLists.txt
cmake_minimum_required(VERSION 3.9) project(remeshing_project) set(CMAKE_CXX_STANDARD 17) if(MINGW OR CYGWIN) add_definitions(-O3) endif() # 直接用CMake变量存储CGAL根目录,替代环境变量的方式 set(CGAL_DIR "S:/dev/cgal") # 这个宏定义完全没必要,CGAL不需要通过它来找头文件,注释掉 # add_definitions(-DCGAL_DIR=$(CGAL_DIR)) # 如果确实要纯头文件模式,加上这个宏(可选,根据你的项目需求) # add_definitions(-DCGAL_HEADERS_ONLY) #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) # 修正CGAL的头文件路径为${CGAL_DIR}/include 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/ ${CGAL_DIR}/include ) 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})
额外提醒
- 如果你要纯头文件使用CGAL,记得打开
add_definitions(-DCGAL_HEADERS_ONLY)的注释,这样CGAL会禁用需要编译的模块,只提供头文件接口。 - 你已经添加了Eigen的路径,这点很好,因为CGAL很多核心模块依赖Eigen,确保这个路径配置没问题。
- 要是后续需要用到GMP/MPFR这些依赖,再取消对应的注释,同时要确保这些库的路径也被CMake识别到,但纯头文件模式下一般不需要。
改完之后,在CLion里点右上角的“Reload CMake Project”重新加载配置,应该就能找到CGAL的头文件了。
内容的提问来源于stack exchange,提问作者GreenyRepublic
相关产品推荐
相关产品推荐

