Makefile:相似文件的不同标志

Posted

技术标签:

【中文标题】Makefile:相似文件的不同标志【英文标题】:Makefile: different flags for similar files 【发布时间】:2014-12-04 18:40:33 【问题描述】:

我有几个文件要编译:one.ftwo.f ... ten.f

有些需要用不同的标志编译。比如one.ffive.f需要用ifort -O编译,six.ften.f需要用ifort -O2编译。

如何创建两个隐式规则来知道哪些文件使用哪些标志进行编译?或者以任何方式将它们组合在一起,这样我就不必逐个文件指定。

同样:

有些依赖于模块mod.f,有些则不依赖。我可以在不逐个文件的情况下指定此依赖项吗?

【问题讨论】:

【参考方案1】:

您绝对可以在每个目标的基础上指定依赖关系,但您确实需要一种指定正确目标的方法(可能是明确的),但如果您可以通过其他方式构建列表(或者已经将它放在变量中,则不一定需要手动指定) )。

one.o two.o three.o four.o five.o: mod.f 行会将其添加为这些目标的先决条件(对于实际构建这些目标的任何规则。

同样,您可以分配 6.11 Target-specific variables 并使用它们。

one.o two.o three.o four.o five.o: FFLAGS+=-O
six.o seven.o eight.o nine.o ten.o: FFLAGS+=-O2

将正确的优化标志添加到内置的%.o: %.f(或任何其他使用$(FFLAGS)的东西。

【讨论】:

以上是关于Makefile:相似文件的不同标志的主要内容,如果未能解决你的问题,请参考以下文章

Makefile:来自相同源的两个目标使用不同的标志编译两次

makefile 编译多个源,具有不同的标志

makefile - 单独的文件夹

如何在任何make文件中添加标志

Makefile:根据 CC/CXX/FC 值更改编译器标志

通过 make 参数而不是 Makefile 传递编译器标志