后缀规则和模式规则(.f.o and %.o:%.f)

通常情况下,在 Makefile 中,文件的转换规则是通过模式规则(pattern rules)来实现的,例如:

%.o : %.f90

这表示从所有的 .f90 文件生成相应的 .o 文件。这种写法使用了通配符 % 来匹配文件的名称部分,而后缀(.f90.o)定义了如何从 .f90 文件生成 .o 文件。

关于 .f.o: 的写法

.f.o:;  ${FC} ${FCFLAGS} -c $*.f

这种写法实际上是一个后缀规则(suffix rule),这是 Makefile 的一种较旧的规则定义方式,具体作用是定义从 .f 文件生成 .o 文件的规则。后缀规则的使用在较早版本的 Makefile 中非常常见,但在现代的 GNU Make 中,模式规则(%.o : %.f90)更加常用。

后缀规则的工作方式
  • .f.o: 规则表示的是“如何从 .f 文件生成 .o 文件”,类似于 %.o : %.f 的模式规则。它匹配任何以 .f 为后缀的文件,生成对应的 .o 文件。
  • 后缀规则格式<source_suffix>.<target_suffix>,例如:
    • .f.o: 表示从 .f.o 的转换。
为什么使用后缀规则?

后缀规则是在早期 Makefile 中的传统做法,但它仍然能够处理简单的文件转换场景,尤其在老的代码库中,仍然可以看到这样的用法。随着 Makefile 功能的增强,模式规则(%.o : %.f%.o : %.f90)变得更灵活和强大,因此在现代项目中更推荐使用模式规则。

后缀规则与模式规则的区别

  • 后缀规则(.f.o:

    • 是一种固定的规则,针对特定的文件后缀。
    • 不使用通配符 %,而是直接指定后缀,如 .f.o
    • 是早期 Makefile 的标准方式,但功能相对有限。
  • 模式规则(%.o : %.f90

    • 更灵活,可以匹配任意文件前缀,只要后缀符合规则。
    • 使用 % 通配符来表示文件的可变部分(如文件名)。
    • 在现代 Makefile 中更加常用,适合大型项目。

代码中的 .f.o: 使用理由

  • 如果项目依赖于 Fortran 代码,并且所有的 .f 文件需要生成对应的 .o 文件,使用后缀规则 .f.o: 是一种简单直接的方式。
  • 它避免了使用通配符 %,这可能在一些老旧或特定场景下更符合项目需求,尤其是较早期的 Makefile 中。

小结

  • .f.o: 是一种后缀规则,指定如何从 .f 文件生成 .o 文件。这是 Makefile 的传统写法。
  • 虽然在现代项目中,模式规则(如 %.o : %.f%.o : %.f90)更常见,但后缀规则依然可以用在较为简单的场景下,或是为了向后兼容一些老项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值