可以說我有文件:如何在Makefile中定義的規則來編譯只就修改過的* .cpp文件(和它們的依賴),並不是所有的* .cpp文件
利布斯:
- one.cpp,one.h
- two.cpp,two.h
- three.cpp,three.h
計劃:
- program.cpp
有沒有辦法,創建Makefile文件將只編譯*這是從上次編譯修改的.cpp?
目前我有類似的東西:
SRCS = one.cpp two.cpp three.cpp
OBJS = $(SRCS:.cpp=.o)
all: $(OBJS) program
.cpp.o:
g++ -Wall -c $<
program:
g++ -Wall $(OBJS) program.cpp -o program
clean:
rm -f $(OBJS) program
我工作得很好,但是當我編譯我的程序,然後更改two.cpp或two.h我需要運行「使清潔」第一,因爲當我其次運行「make」我得到:
Nothing to be done for 'all'.
我想改變我的Makefile以這種方式,它會承認我的改變和重新編譯文件和它的依賴(如果one.cpp從two.cpp使用代碼這是修改過的,兩個文件都應該重新編譯)。
所以,如果我修改two.cpp,使應該做的:
g++ -Wall -c two.cpp
g++ -Wall $(OBJS) program.cpp -o program
但如果one.cpp使用從two.cpp代碼進行了修改,使shold做:
g++ -Wall -c one.cpp
g++ -Wall -c two.cpp
g++ -Wall $(OBJS) program.cpp -o program
(我想你的意思是'one.cpp',而不是'first.cpp'。) – Beta 2010-06-21 19:10:04
是的,它應該是one.cpp。 – user360872 2010-06-21 19:24:45