如何正确关闭 Visual Studio 17.3.4 cmake 项目的 /ZI?

问题描述 投票:0回答:2

我的 C++ 代码仅在内联时才有效。但即使使用了

__forceinline
,VC 也拒绝在调试模式下内联它们。我知道我可以将它们变成宏,但这很丑陋。

经过一番谷歌搜索后,我发现罪魁祸首是

/ZI
选项。我打印所有选项。但cmake似乎没有添加
/ZI
选项。并且 删除所有 /Z7、/Zi、/ZI 不起作用。

解决问题的唯一方法是在

CmakeLists.txt
中添加以下行:

add_compile_options(/ZI-)

但是它给了我很多以下警告

Command line warning D9025: overriding '/Zi' with '/ZI'
Command line warning D9002: ignoring unknown option '/Z-'

有没有办法在不发出警告的情况下关闭/ZI?

visual-studio visual-c++ cmake
2个回答
1
投票

CMake 正在自动设置

/Zi
/Ob0
进行调试构建。您可以在
CMakeCache.txt
中搜索这两个标志,您将在
CMAKE_CXX_FLAGS_DEBUG
中找到它们。负责此操作的 cmake 脚本位于
<cmake-path>\Modules\Platform\Windows-MSVC.cmake

您现在可以删除这两个标志(如您所说,只需使用

CMAKE_CXX_FLAGS_DEBUG
)。考虑使用自定义构建配置而不是更改调试配置。


0
投票

从 CMake 3.25 开始,可以使用

CMAKE_MSVC_DEBUG_INFORMATION_FORMAT
:

选择此选项
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>")

文档链接:https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_DEBUG_INFORMATION_FORMAT.html

© www.soinside.com 2019 - 2024. All rights reserved.