![]() |
1
9
使用隐式规则通常更容易。有很多预定义的变量,您只需要在其中指定变量。
然后您需要定义一个可执行文件,如下所示
因为您没有将对象存储在同一个目录中,所以您还需要指定一个新的隐式规则(否则,我们现在就完成了)。
%是模式匹配,它将在左侧和右侧匹配相同的文本,因此此规则将使foo.o从foo.cpp中退出。 如果没有命令(它可能是从另一个规则中获取的,我不确定),尝试一下,否则让它说:
$@是规则的目标(例如foo.o),而$^是右侧的所有文件。 我把这个写在头上,没法测试,所以请告诉我结果如何。:) 为了使它更加优雅,您可以包括一个依赖文件
如果您运行的是gnu make,它会尝试生成.depend文件,如果找不到它(对于旧的学校make,您需要先自己创建它,但是如果您想通过make file管理它,它可能只是一个虚拟文件)
依赖项文件将包含每个.cpp文件的行,告诉make它需要什么头文件,这将允许make在更改某些内容时重新编译必要的文件。不过,这对你最初的问题没有帮助,只是觉得它可能会有用。
编辑:
|
![]() |
2
0
我想你可以用这个:
再说一次,我不太确定…特别是关于$(@:.cpp=.o)部分 |
![]() |
Jeremy L. · 在变量名中查找子字符串 6 月前 |
![]() |
wvxvw · 在Make规则中将源和目标配对 6 月前 |
![]() |
thetango · Makefile:多次执行目标 7 月前 |
![]() |
Bokambo · make:MakeFile无需执行任何操作 7 月前 |
![]() |
Gergely · rm命令在shell中工作,但在Makefile中不工作 11 月前 |