Makefile中 把两个文件赋给一个变量,不是合并,需要区分两个文件,并通过echo将他们复制给另一个变量读取出来
时间: 2024-11-25 08:32:21 浏览: 18
在Makefile中,如果你想把两个文件的内容分别赋给一个变量,而不是合并,你可以创建两个独立的目标规则,每个规则负责处理一个文件的内容。假设这两个文件分别为`file1.txt`和`file2.txt`,你可以这样做:
```makefile
VAR_FILE1 := $(shell cat file1.txt)
VAR_FILE2 := $(shell cat file2.txt)
all:
# 在这里,你可以选择只显示其中一个变量
echo "Content of file1: $$(VAR_FILE1)"
# 同样地,也可以展示file2的内容
echo "Content of file2: $$(VAR_FILE2)"
# 如果你想把两个变量的内容都展示,可以在另一个目标中做
both_content:
echo "Both files combined:"
echo "$$(VAR_FILE1) and $$(VAR_FILE2)"
```
上述例子中,`VAR_FILE1`和`VAR_FILE2`分别包含了两个文件的内容,而`all`和`both_content`规则则是用来分别或同时打印这两个变量的值。注意,`$$`符号用于在Makefile中嵌入命令的输出,避免shell元字符的影响。
相关问题
Makefile中 把两个db文件赋给一个变量,不是合并,需要区分两个文件,并通过echo将他们复制给另一个变量读取出来
在Makefile中,如果你想把两个数据库文件分别赋值给不同的变量,并能够独立地引用它们,可以这样做:
```makefile
DB1 := /path/to/db1.txt
DB2 := /path/to/db2.txt
# 只是存储文件路径,不直接合并
DB_VARS := $(DB1) $(DB2)
# 定义一个新变量,用于显示或者传递这俩文件路径
SHOW_DB_VARS := $(foreach db,$(DB_VARS),$(info Reading from: $(db)))
all:
$(SHOW_DB_VARS)
# 如果你需要将它们一起读取,可以创建一个函数来处理
# 例如,假设你想一起读取:
READ_BOTH := $(shell cat $(DB1) $(DB2))
echo "Both databases combined: $(READ_BOTH)"
clean:
# 清理规则
-rm $(DB1) $(DB2)
```
在这个例子中,`DB_VARS`是一个列表,包含了两个不同的变量`DB1`和`DB2`的值。`SHOW_DB_VARS`则是用`foreach`循环逐个打印这两个变量的值。
如果你想一次性读取两个文件的内容,可以用`cat`命令将它们连接起来,如`READ_BOTH`所示。
阅读全文