Огњ*_*јић 2 variables makefile
假设我要改写这个:
main.o: main.cpp
g++ -c main.cpp
factorial.o: factorial.cpp
g++ -c factorial.cpp
hello.o: hello.cpp
g++ -c hello.cpp
Run Code Online (Sandbox Code Playgroud)
以更通用的方式,如下所示:
SOURCES = main factorial hello
$(SOURCES).o: $(SOURCES).cpp
g++ -c $(SOURCES).cpp
Run Code Online (Sandbox Code Playgroud)
我怎么做?
首先,我们告诉编译器如何nme输出文件,以避免误解:
main.o: main.cpp
g++ -c main.cpp -o main.o
factorial.o: factorial.cpp
g++ -c factorial.cpp -o factorial.o
hello.o: hello.cpp
g++ -c hello.cpp -o hello.o
Run Code Online (Sandbox Code Playgroud)
然后我们输入自动变量,以减少冗余:
main.o: main.cpp
g++ -c $< -o $@
factorial.o: factorial.cpp
g++ -c $< -o $@
hello.o: hello.cpp
g++ -c $< -o $@
Run Code Online (Sandbox Code Playgroud)
然后我们意识到这些规则看起来都一样,所以我们将它们组合成一个静态模式规则:
main.o factorial.o hello.o: %.o : %.cpp
g++ -c $< -o $@
Run Code Online (Sandbox Code Playgroud)
然后我们使用变量来存储对象的名称:
OBJECTS := main.o factorial.o hello.o
$(OBJECTS): %.o : %.cpp
g++ -c $< -o $@
Run Code Online (Sandbox Code Playgroud)