gpt4 book ai didi

php - 在大型 C 项目上编写代码时进行测试

转载 作者:行者123 更新时间:2023-11-28 21:28:22 26 4
gpt4 key购买 nike

我一直在查看 PHP-SRC 项目,并阅读了简短的开发指南:http://php.net/build-setup.php

然而,作为 C 语言的新手(但不是编程新手),我对每次需要测试更改时都需要重新编译的想法感到有点吃惊。

当用 PHP 编写时,我可以插入一个小片段以查看是否 x == y 在某个执行点并几乎立即对其进行测试。但在我开始涉足像 PHP 这样大的项目之前,我想知道我是否错了,因为我需要构建整个源代码来测试小的更改。

构建过程中是否有一个阶段可以将小的更改编译到现有的二进制文件中,而无需每次等待 10-20 分钟?

最佳答案

我认为 make 是您所需要的。
https://www.gnu.org/software/make/
文档在
http://www.gnu.org/software/make/manual/make.html
所以你有很多大的源文件,而你只对其中一个做了一点小改动,make 只会重新编译那个源文件,因为其他的都是最新的。
回到我构建一个迷你“shell”的时候,这里是 makefile:

CFLAGS=-g -O2 -Werror -Wfatal-errors 
OBJECTS=parser.o analyser.o processing.o prompt.o
LINK=-lfl
shell: $(OBJECTS)
gcc $(CFLAGS) $(OBJECTS) $(LINK) -o shell
parser.o: shell.y
bison -d shell.y
gcc $(CFLAGS) -c shell.tab.c -o parser.o
analyser.o: shell.l
flex shell.l
gcc $(CFLAGS) -c lex.yy.c -o analyser.o
processing.o:processing.c processing.h
gcc $(CFLAGS) -c processing.c -o processing.o
prompt.o: prompt.c prompt.h
gcc $(CFLAGS) -c prompt.c -o prompt.o
clean:
rm -f $(OBJECTS) shell.tab.c lex.yy.c shell.tab.h

因此,如果我在 processing.c 中进行了更改,make 只会重建 processing.o,然后重新链接项目。
所以 make 文件由规则组成:

> target : prerequisite
recipe

make needs prerequisite to build target using recipe.
finally, if you want to remove the object files, you can add a "clean" rule and then run :

make clean

关于php - 在大型 C 项目上编写代码时进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32743376/

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