C++ 使用自动工具更改依赖性时重新编译某些目标

C++ 使用自动工具更改依赖性时重新编译某些目标,c++,makefile,autotools,C++,Makefile,Autotools,我已经能够使用autotools生成可移植的Makefiles,但是当我更改其中一个依赖项时,我遇到了重新编译目标的问题(它没有)。假设我有以下代码结构: include -> head.h src -> main.cpp bin -> a.out 我已经能够创建一个makefile,它将编译main.cpp并将a.out放入bin。需要注意的是,main.cpp取决于head.h。我遇到的问题是,如果我更改head.h,我需要它重新编译main.cpp,并重新链接以形成a.

我已经能够使用autotools生成可移植的Makefiles,但是当我更改其中一个依赖项时,我遇到了重新编译目标的问题(它没有)。假设我有以下代码结构:

include -> head.h
src -> main.cpp
bin -> a.out
我已经能够创建一个makefile,它将编译
main.cpp
并将
a.out
放入
bin
。需要注意的是,
main.cpp
取决于
head.h
。我遇到的问题是,如果我更改
head.h
,我需要它重新编译
main.cpp
,并重新链接以形成
a.out
,但它不会。传统上,我可以在手工制作的Makefile中通过添加对每个目标的依赖性来实现这一点(
main.o、a.out
等)。即使我更改
main.cpp
(即,如果我更改
main.cpp
,它根本不会重新编译),此问题仍然存在


我确实在configure中启用了依赖项跟踪功能(它会拾取
main.cpp
依赖于
head.h
),但是在重要依赖项发生变化时,我是否还缺少一些其他功能来重新编译目标,而不必清理和重新编译所有内容?

您的
Makefile.am
是什么样子?更改
head.h
main.cpp
后运行
make-d
时,您从中得到了什么输出(这将是很多)?您知道可以将头文件放入
\u SOURCES
变量中吗?