有多个目标时,如何在Makefile规则中的字符串中添加后缀?

卢莫布兹

我的目标是拥有一个Makefile,该文件可将多个可执行文件全部编译在同一目录中。OBJ包含除mains.o之外的所有.o文件,我计划仅在编译特定可执行文件时才添加。逻辑是这样的:调用“ make all”将首先尝试使用OBJ和main1.o构建main1,但是我不知道如何指定main1.o!我想到了使用自动变量$ @来获取目标并将其附加到.o扩展名,但是它不起作用。

EXE_ALL = main1 main2 main3
all: $(EXE_ALL)

$(EXE_ALL): $(OBJ) $([email protected]:=.o) # <--- here I don't know how to add the current mains.o?

我知道应该扩大到多个目标。

main1: $(OBJ) main1.o
main2: $(OBJ) main2.o
main3: $(OBJ) main3.o

现在,它只构建所有内容,但不构建mains.o文件,它将直接构建可执行文件(它们都可以工作,但我也想要mains.o),如下所示:main1.cpp OBJ-> main1。

任何帮助表示赞赏。谢谢。

粗暴的

为了[email protected]在先决条件列表中进行解析,您需要打开二级扩展,如下所示:

$ cat Makefile
EXE_ALL = main1 main2 main3
OBJ = whatever.o

.PHONY: all
all: $(EXE_ALL)

.SECONDEXPANSION:
$(EXE_ALL): $(OBJ) [email protected]
        @echo Making [email protected] from $^

%.o:
        @echo Making [email protected]

输出:

$ make
Making whatever.o
Making main1.o
Making main1 from whatever.o main1.o
Making main2.o
Making main2 from whatever.o main2.o
Making main3.o
Making main3 from whatever.o main3.o

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

复制列表中的字符串,并将整数后缀添加到新添加的后缀中

如何在字符串中的特定单词出现时添加前缀和后缀?

如何在Java字符串中添加转义字符?

如何在golang中的URL中添加字符串?

如何在Swift中检查字符串以(前缀)开头还是以(后缀)结尾

如何从bash中的字符串中删除后缀?

如何在R中的字符串中添加字符

如何找到字符串中每个后缀的出现次数?

Angular Material:在输入中添加逗号分隔的字符串时,如何添加多个筹码?

如何在Makefile中连接字符串?

创建动态类名时,如何在JavaScript字符串中添加空格?

如何在输入中添加多个字符串?

如何在字符串列表的字符串数组中添加字符串数组?

如何在Python中的字符串中添加“

如何在目标C中的字符串中打印字符串对象

如何在T-SQL中清理字符串并提取数字后缀

Makefile中以。开头的目标的含义是什么,它与后缀规则有何不同/相似?

如何在特殊字符前的字符串中添加\

在以空格分隔的字符串中的所有元素上添加前缀/后缀

如何在字符串中的数字中添加逗号

如何在C中字符串的开头添加字符?

仅当字符串存在于所有文件中时,才如何在多个文件中使用字符串?

如何从目标字符串中的源字符串中找到任何单词,并在PHP中从目标字符串中删除所有匹配的单词

如何在Eclipse的字符串数组中的所有单词中添加(“”)?

如何在ANTLR 4中传递多个字符串不同的解析规则?

如何在目标Makefile中设置多个变量

如何在makefile中为目标编写特定规则?

Matlab:如何优化代码以在字符串中查找后缀

如何在python中的字符串中添加前缀和后缀