![]() |
1
9
使用隐式规则通常更容易。有很多预定义的变量,您只需要在其中指定变量。
然后您需要定义一个可执行文件,如下所示
因为您没有将对象存储在同一个目录中,所以您还需要指定一个新的隐式规则(否则,我们现在就完成了)。
%是模式匹配,它将在左侧和右侧匹配相同的文本,因此此规则将使foo.o从foo.cpp中退出。 如果没有命令(它可能是从另一个规则中获取的,我不确定),尝试一下,否则让它说:
$@是规则的目标(例如foo.o),而$^是右侧的所有文件。 我把这个写在头上,没法测试,所以请告诉我结果如何。:) 为了使它更加优雅,您可以包括一个依赖文件
如果您运行的是gnu make,它会尝试生成.depend文件,如果找不到它(对于旧的学校make,您需要先自己创建它,但是如果您想通过make file管理它,它可能只是一个虚拟文件)
依赖项文件将包含每个.cpp文件的行,告诉make它需要什么头文件,这将允许make在更改某些内容时重新编译必要的文件。不过,这对你最初的问题没有帮助,只是觉得它可能会有用。
编辑:
|
![]() |
2
0
我想你可以用这个:
再说一次,我不太确定…特别是关于$(@:.cpp=.o)部分 |
![]() |
Darky · 多重定义…c++vsCode[重复] 2 年前 |
![]() |
Jim Merkel · 软件包管理器如何知道在哪里安装文件 3 年前 |
![]() |
franco yang · makefile中的循环main 3 年前 |
![]() |
dopller · 使用cmake将仅标题库包含到我的项目时出错 3 年前 |
![]() |
Andres Moreno Abrego · 为什么当BOOL_VAR为false时,Makefile表达式“export INTEGER_VAR?=$(if$(BOOL_VAR),2,5)”会导致INTEGER_VAR=2? 3 年前 |
![]() |
miterhen · 发生错误后,如何继续中断编译? 7 年前 |