我的 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?
从 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