我有几个要编译的文件:one.f
two.f
... ten.f
有些需要使用不同的标志进行编译。例如,从one.f
到five.f
需要使用ifort -O
进行编译,six.f
到ten.f
需要使用ifort -O2
进行编译。
如何制作两个隐式规则,知道哪些文件使用哪些标志进行编译?或者任何组合在一起的方式,所以我不必逐个文件指定。
类似地:
有些取决于模块mod.f
而有些则不依赖。我是否可以在逐个文件的基础上指定此依赖项?
答案 0 :(得分: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)
的任何其他内容添加正确的优化标记。