使用星号更改多个源文件的CMake编译器标志

Chr*_*ton 2 flags cmake

我正在尝试调试与编译器优化相关的问题(-O2或以下没有问题,使用-O3进行segfault)我希望能够为我的源代码块切换编译器标志,这样我就可以尝试缩小段错误的来源.

我可以这样做将全局优化级别设置为-O2,并改变单个文件的属性,如下所示:

SET_SOURCE_FILES_PROPERTIES(file1.f90 PROPERTIES COMPILE_FLAGS -O3)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用*.f90为多个文件执行此操作时,它似乎不起作用:

SET_SOURCE_FILES_PROPERTIES(*.f90 PROPERTIES COMPILE_FLAGS -O3)
Run Code Online (Sandbox Code Playgroud)

有没有办法为多个文件执行此操作而不按名称指定每个文件?

Com*_*sMS 6

你可以为一个文件列表选择glob:

file(GLOB MyFiles *.f90)
set_property(SOURCE ${MyFiles} PROPERTY COMPILE_FLAGS -O3)
Run Code Online (Sandbox Code Playgroud)

或者,您可以设置相应目标的COMPILE_FLAGS目标属性.通常,编译具有不同编译标志的某些源文件比同一目标中的其他源文件没有多大意义.因此,除非您有充分的理由在每个文件的基础上执行此操作,否则应始终使用目标属性.