问题类似于这个问题
Handling header files dependencies with 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在修改头文件时没有重建main.c。 我希望它自动生成头文件依赖项。 是否可以使用cmake?
如果没有,还有其他工具可以做到吗?
答案 0 :(得分:3)
正如我的评论中提到的,我已经尝试了您的示例,但事情正常运行:如果修改了main.h
,则会重新编译main.c
。
我安装的CMake(版本2.8.0)告诉我添加
cmake_minimum_required(VERSION 2.8)
到CMakeLists.txt
文件,但这就是我需要的所有调整。
答案 1 :(得分:0)
为谷歌搜索的其他人回答这个问题......
我的一个项目遇到了这个问题。事实证明,我在运行cmake后将标头添加到cpp文件中。重新运行cmake修复了问题。如果您遇到此问题,请尝试并查看是否能解决问题。
答案 2 :(得分:-1)
来自AUX_SOURCE_DIRECTORY
的cmake 2.8.0文档:
使用此命令避免编写源列表很有诱惑力 库或可执行目标的文件。 虽然这似乎有效, CMake没有办法生成一个知道何时a的构建系统 已添加新的源文件。通常是生成的构建系统 知道何时需要重新运行CMake,因为CMakeLists.txt文件是 修改为添加新源。当源只是添加到 目录无需修改此文件,必须手动完成 重新运行CMake以生成包含新文件的构建系统。
为什么要避免创建文件列表?此类列表通常不会经常更改。