gpt4 book ai didi

c++ - CGAL 覆盖 CMAKE_BUILD_TYPE=Debug

转载 作者:行者123 更新时间:2023-11-30 05:08:48 33 4
gpt4 key购买 nike

在我的 CMake C++ 项目中,我使用的是 CGAL。它通过 apt 安装在我的 Ubuntu 系统(版本 16.04 LTS)上(Package libcgal-dev version 4.7-4)。

在我的CMakeLists.txt中,CGAL库包含如下:

find_package(CGAL REQUIRED)
if ( CGAL_FOUND )
include(${CGAL_USE_FILE})
include( CGAL_CreateSingleSourceCGALProgram )
endif()

到目前为止一切正常。

当我想在 Debug模式下编译时出现问题:我从我的构建目录调用 cmake:

cmake -DCMAKE_BUILD_TYPE=Debug ..

然而,在输出中,cmake 说

-- Build type: Release

这似乎是由 /usr/lib/x86_64-linux-gnu/cmake/CGAL/CGALConfig.cmake 中的这一行 (35) 设置的:

set(CGAL_BUILD_TYPE_INIT "Release" )

但我不知道如何覆盖它。我唯一发现的是两次运行上述命令时启用了调试,这似乎不是正确的方法。

如何在使用 CGAL 时使用调试选项进行编译?

最佳答案

它应该运行两次的原因是第一次,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})

关于c++ - CGAL 覆盖 CMAKE_BUILD_TYPE=Debug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46569772/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com