我试图强制CMake将std= gnu 17而不是std=c17传递给GCC。
set_property(TARGET "${MyProject_${Compile_Type}_NAME}" PROPERTY C_STANDARD gnu17)
在CMakeLists.txt中,但我得到以下错误:
CMake Error at CMakeLists.txt:260 (add_executable):
C_STANDARD is set to invalid value 'gnu17'
当我尝试gnu 11而不是gnu 17时,同样的情况也会发生。我希望它传递标志的原因是我正在使用GCC扩展之一,当使用-pedantic warning levels(我更愿意继续使用)时会产生警告。请注意,这是专门针对C的,而不是C++的。
1条答案
按热度按时间hof1towb1#
通常情况下,CMake会使用
-std=gnu17
和普通的C_STANDARD 17
,但是如果你想确保CMake会使用编译器特定的扩展,那么你也可以设置C_EXTENSIONS属性:如果您的代码只能与特定的编译器及其扩展一起工作,那么您可能还需要检查编译器: