gpt4 book ai didi

c - Makefile 中的测试命令

转载 作者:太空宇宙 更新时间:2023-11-04 03:34:05 25 4
gpt4 key购买 nike

我用 C 编写了一些函数,我想用 Makefile 编译它们。

在编译之前我想做一个命令用另一个命令测试它们,然后只有当它们通过测试时才编译它们。

我在想什么:

tests :
gcc tests.c
all : tests
gcc *.c

我想编译 tests.c,然后如果它们可以编译所有函数。

我该怎么做?非常感谢

最佳答案

建筑总纲realproduct仅在测试通过后:

all: realproduct

realproduct: | run-tests

run-tests: tests
./$<

它是如何工作的?

有一个隐含的编译规则tests.c进入tests可执行文件,它将运行 cc tests.c -o tests你可以用 CFLAGS 修改它, LDFLAGS , LDLIBS变量。

$<表示第一个依赖项,./是它的路径,所以它意味着运行 tests从本地目录执行

|放在“仅订单依赖项”之前,这意味着 run-tests必须在 realproduct 之前“制作” ,但是 run-tests不是“buildin”的一部分realproduct .因此,cc realproduct.c -o realproduct将被调用以构建。

所以,总而言之,无论何时 tests.c改了,先tests将被 build ,然后 ./tests将运行,然后 realproduct将建成:

$ make
cc tests.c -o tests
./tests
cc realproduct.c -o realproduct

终于可以使用https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html了确保始终运行某些命令,而不仅仅是在依赖项发生变化时。

关于c - Makefile 中的测试命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33954830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com