【发布时间】:2015-02-10 14:31:41
【问题描述】:
在处理 C++ 项目时,我注意到我正在更改我的主代码中链接的头文件之一,但 make 实用程序没有注册它。鉴于使用“make - B”的更改,我不得不强制它以不同的方式编译。
我想知道为什么会这样;是因为我的 makefile 是如何编写的,我的文件如何相互依赖,两者都依赖,还是两者都不依赖?
这是我的生成文件:
CXXFLAGS = -Wall -Werror -std=c++11 -pedantic -Wvla -g
//CXXFLAGS = -std=c++11
all: main.o game.o zombie.o
g++ $(FLAGS) game.o main.o zombie.o -o main $(CXXFLAGS)
game: game.cpp
g++ $(FLAGS) -c game.cpp $(CXXFLAGS)
zombie: zombie.cpp
g++ $(FLAGS) -c zombie.cpp $(CXXFLAGS)
main: main.cpp
g++ $(FLAGS) -c main.cpp pairing_heap.h $(CXXFLAGS)
我对pairing_heap.h
进行了更改,它包含在我的主文件中。
为什么 make 没有注意到它应该再次编译?因为我觉得这是一个概念上的误解,所以我觉得没有必要包括我所做的更改或我做“make - B”时的输出差异。它们是简单的东西,例如新的 pairing_heap.h 中包含的 cout 和 cerr,直到被强制才被拾取。
如果我需要提供更多信息,请告诉我。
谢谢。
【问题讨论】:
标签: c++ c++11 makefile dependencies conceptual