C++ Makefile只跟踪第一个文件
我的makefile中有两个.cpp文件:C++ Makefile只跟踪第一个文件,c++,makefile,C++,Makefile,我的makefile中有两个.cpp文件: test1.o : test1.cpp g++ test1.cpp -o test1.o test2.o : test2.cpp g++ test2.cpp -o test2.o 在我对test1.cpp和test2.cpp进行更改并在命令行中键入make之后,只重新编译test1.o,而不对test2.o执行任何操作 但是,如果我交换makefile中的两个块,test2.o将自动重新编译,而test1.o将不会
test1.o : test1.cpp
g++ test1.cpp -o test1.o
test2.o : test2.cpp
g++ test2.cpp -o test2.o
在我对test1.cpp和test2.cpp进行更改并在命令行中键入make
之后,只重新编译test1.o
,而不对test2.o
执行任何操作
但是,如果我交换makefile中的两个块,test2.o
将自动重新编译,而test1.o
将不会
似乎我的makefile只跟踪第一个文件。我想知道哪个部分出错。尝试添加默认目标。一个非常简单的起点:尝试添加一个默认目标。一个非常简单的起点:
all:test1.o test2.o
默认情况下make
将在makefile中构建第一件事,如果您不告诉它要构建什么
您可以运行make test1.o test2.o
来专门制作这两个,或者添加一个伪目标,这样默认情况下它将制作all
——这是许多makefile需要的
使用
使用.PHONY
告诉Makeall
不是一个真实的文件,因此它不会出现错误行为,以防您出于某种原因拥有一个名为all
的文件
all: test1.o test2.o
.PHONY: all
默认情况下,
make
将在makefile中构建第一件事,如果您不告诉它要构建什么
您可以运行make test1.o test2.o
来专门制作这两个,或者添加一个伪目标,这样默认情况下它将制作all
——这是许多makefile需要的
使用
使用.PHONY
告诉Makeall
不是一个真实的文件,因此它不会出现错误行为,以防您出于某种原因拥有一个名为all
的文件
all: test1.o test2.o
.PHONY: all
您可能需要在这些对象上设置一个
-c
标志,因为它们只是构建对象而不是链接。您可能需要在这些对象上设置一个-c
标志,因为它们只是构建对象而不是链接。