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

时间:2014-07-03 13:14:04

标签: cmake flags

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

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

SET_SOURCE_FILES_PROPERTIES(file1.f90 PROPERTIES COMPILE_FLAGS -O3)

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

SET_SOURCE_FILES_PROPERTIES(*.f90 PROPERTIES COMPILE_FLAGS -O3)

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

2 个答案:

答案 0 :(得分:6)

您可以glob查看文件列表:

file(GLOB MyFiles *.f90)
set_property(SOURCE ${MyFiles} PROPERTY COMPILE_FLAGS -O3)

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

答案 1 :(得分:1)

只需将正确答案添加到@ComicSansMS。

您还可以通过以下方式使用SET_SOURCE_FILES_PROPERTIES

file(GLOB MyFiles *.f90)
SET_SOURCE_FILES_PROPERTIES(${MyFiles} PROPERTIES COMPILE_FLAGS -O3)

此代码与

具有相同的作用
file(GLOB MyFiles *.f90)
set_property(SOURCE ${MyFiles} PROPERTY COMPILE_FLAGS -O3)