在我的CMake C ++项目中,我正在使用CGAL。
它通过apt(Package libcgal-dev
version 4.7-4)安装在我的Ubuntu系统(版本16.04 LTS)上。
在我的CMakeLists.txt中,CGAL库包含如下:
find_package(CGAL REQUIRED)
if ( CGAL_FOUND )
include(${CGAL_USE_FILE})
include( CGAL_CreateSingleSourceCGALProgram )
endif()
到目前为止一切正常。
当我想在调试模式下编译时出现问题: 我从我的构建目录中调用cmake:
cmake -DCMAKE_BUILD_TYPE=Debug ..
然而,在输出中,cmake说
- 构建类型:发布
这似乎是由 /usr/lib/x86_64-linux-gnu/cmake/CGAL/CGALConfig.cmake 中的这一行(35)设置的:
set(CGAL_BUILD_TYPE_INIT "Release" )
但我不知道如何覆盖这个。 我发现的唯一一件事就是在运行上述命令两次时启用了调试,这似乎不是正确的方法。
如何在使用CGAL时使用调试选项进行编译?
答案 0 :(得分:1)
它应该运行两次的原因是第一次,cmake将运行查找包脚本,但第二次cmake将缓存设置变量,并且不会再次实际运行脚本。 如果您所说的是正确的并且该脚本覆盖了构建类型(症状似乎是这样),也许他们有这样的理由(我不知道可能是什么原因,但您应该对其进行调查)。 一般来说,您的情况的解决方法可能是自己缓存构建类型并在找到这样的包后重置它:(再次,它可能是危险的,首先,确保它是安全的)
set (CACHED_BUILD_TYPE ${CMAKE_BUILD_TYPE})
find_package(CGAL REQUIRED)
if ( CGAL_FOUND )
include(${CGAL_USE_FILE})
include( CGAL_CreateSingleSourceCGALProgram )
endif()
set (CMAKE_BUILD_TYPE ${CACHED_BUILD_TYPE})