CMAKE自动头文件依赖

问题类似于这个问题

cmake处理头文件的依赖关系

我有示例程序目录有main.c main.h和CMakeLists.txt

main.h的内容是

#ifndef MAIN_H #define MAIN_H int t=3; int y=2; #endif 

main.c的内容是

 #include <main.h> #include<stdio.h> int main(){ printf("%d apple",t); } 

和CMakeLists.txt

 PROJECT( test ) AUX_SOURCE_DIRECTORY(. test_SRCS) include_directories(.) ADD_EXECUTABLE (main ${test_SRCS}) 

但cmake不会在修改头文件时重buildmain.c。 我希望它自动生成头文件依赖。 是否有可能使用cmake?

如果没有其他工具可以做到这一点?

正如在我的评论中提到的,我已经尝试了你的例子,事情工作正常:如果main.h被修改,那么main.c将被重新编译。

我安装的CMake(2.8.0版)告诉我补充一下

 cmake_minimum_required(VERSION 2.8) 

CMakeLists.txt文件,但这是所有我需要的调整。

回答这个谷歌搜索其他人…

我遇到了这个问题,我的一个项目。 事实证明,我运行cmake后,将头添加到cpp文件。 重新运行cmake解决了这个问题。 如果遇到这种情况,试试看看是否解决了这个问题。

AUX_SOURCE_DIRECTORY的cmake 2.8.0文档:

使用这个命令避免为库或可执行目标写入源文件的列表是诱人的。 虽然这看起来可行,但CMake无法生成一个知道何时添加新源文件的构建系统。 通常生成的构建系统知道何时需要重新运行CMake,因为CMakeLists.txt文件被修改为添加新的源。 当源文件刚被添加到目录而不修改这个文件时,就不得不手动重新运行CMake来生成一个包含新文件的生成系统。

为什么你想避免创建一个文件列表? 这样的清单通常不会频繁变化。