问题类似于这个问题
用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来生成一个包含新文件的生成系统。
为什么你想避免创建一个文件列表? 这样的清单通常不会频繁变化。