Com*_*kup 0 c makefile gnu-make
我有一个makefile:
CFLAGS= -Wall -g
all: ex1.c
cc ex1.c -o ex1
valgrind ./ex1
cc ex2.c -o ex2
valgrind ./ex2
cc ex3.c -o ex3
valgrind ./ex3
clean:
rm -f ex1
rm -f ex2
rm -f ex3
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以简化这个,所以我不需要为每个文件添加3行(我期待~50个文件)而是我可以只插入一个数字,它将运行该数量的文件的命令?所有文件都具有相同的命名方案/^ex\d{1,}\.c/,并且都在同一目录中.
谢谢您的帮助.
你不一定需要循环:
CFLAGS= -Wall -g
ALL_EX=ex1 ex2 ex3
all: $(ALL_EX)
ex%: ex%.c
$(CC) $(CFLAGS) $@.c -o $@
valgrind ./$@
clean: ; rm -f $(ALL_EX)
Run Code Online (Sandbox Code Playgroud)
要添加另一个测试,您只需要exN在ALL_EX变量中添加另一个测试.
或者,valgrind从编译中拆分调用:
CFLAGS= -Wall -g
ALL_EX=ex1 ex2 ex3
TEST_EX=$(ALL_EX:ex%=test_ex%)
all: $(TEST_EX)
cmp: $(ALL_EX)
ex%: ex%.c
$(CC) $(CFLAGS) $@.c -o $@
test_ex%: ex%
valgrind ./$<
clean: ; rm -f $(ALL_EX)
Run Code Online (Sandbox Code Playgroud)
这样你也可以避免冗余的ex*.c文件重新编译.最重要的是:通过这种方式,您可以将编译和测试并行化make -j.
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |