我認爲make就是你需要的。
https://www.gnu.org/software/make/
和文件建立在
http://www.gnu.org/software/make/manual/make.html
所以你有很多大的源文件,你在其中只是一個做了小改動,令只會重新編譯源文件,因爲其他的都是最新的。
早在我建了一個迷你「殼」的時候,這裏是生成文件:
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的改變,使只有重建processing.o,然後再重新鏈接項目。
所以make文件包含的規則:
> target : prerequisite
recipe
使需求前提使用的配方來構建目標。
最後,如果你想刪除目標文件,你可以添加一個「乾淨」的規則,然後運行:
make clean
這真的取決於你在做什麼。如果您正在使用PHP擴展,您可以通過運行'phpize && ./configure --enable-extname && make && make install'來構建擴展(通常不會超過1〜2分鐘)。此外,'make'確實記錄了它應該重新編譯的對象,以及自編譯完代碼後哪些對象保持不變。另外:檢查'x == y'是不是通過在C中添加代碼來做的事情,你可以通過使用調試器(如gdb)來實現這一點 –
@EliasVanOotegem我已經給它一個嘗試,它的核心php- src我正在調查。按照說明,構建過程相對簡單。即使在'zend.h'中添加了一些任意代碼,儘管運行'make'沒有做任何事情,運行'./configure;做'確實,而且非常快。這是編譯增量更改的正確過程嗎? – Flosculus
運行'./configure; make'看起來有點奇怪(當然,它不是'./configure && make'?),請檢查'./configure --help',並且實際檢查所有需要傳遞給'configure'的參數(比如編譯的擴展和你想要啓用哪些功能等)。然後再次運行'make' –