我试图在基于cmake的版本中分别控制C和C ++代码的编译器警告:
对于gcc和clang,我可以使用TARGET_COMPILE_OPTIONS
设置仅适用于C编译器的其他标志:
target_compile_options(MyLib PRIVATE $<$<AND:$<COMPILE_LANGUAGE:C>,$<NOT:$<CXX_COMPILER_ID:MSVC>>>: -Wall>)
现在,我想做同样的事情,但是对于MSVC:
$<$<AND:$<COMPILE_LANGUAGE:C>,$<CXX_COMPILER_ID:MSVC>>: /W4>
这不起作用-似乎COMPILE_LANGUAGE:C
被混合C / C ++项目中基于MSVC的生成所忽略。我正在使用Visual Studio 2019进行测试。
有人对此有解决方案吗?(除了只为C代码使用单独的目标之外)
我试图在基于cmake的版本中分别控制C和C ++代码的编译器警告:对于gcc和clang,我可以使用...来设置仅适用于C编译器的其他标志...
...似乎
COMPILE_LANGUAGE:C
被混合C / C ++项目中基于MSVC的构建所忽略。