Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux CMAKE自动头文件依赖项_Linux_Cmake - Fatal编程技术网

Linux CMAKE自动头文件依赖项

Linux CMAKE自动头文件依赖项,linux,cmake,Linux,Cmake,这个问题和这个问题相似 我有一个示例程序dir,其中包含main.cmain.h和CMakeLists.txt 主要的.h内容是 #ifndef MAIN_H #define MAIN_H int t=3; int y=2; #endif #include <main.h> #include<stdio.h> int main(){ printf("%d apple",t); } c的主要内容是 #ifndef MAIN_H #define MAIN_H in

这个问题和这个问题相似

我有一个示例程序dir,其中包含main.cmain.h和CMakeLists.txt

主要的.h内容是

#ifndef MAIN_H
#define MAIN_H
int t=3;
int y=2;
#endif
#include <main.h>
#include<stdio.h>
int main(){

  printf("%d apple",t);
}
c的主要内容是

#ifndef MAIN_H
#define MAIN_H
int t=3;
int y=2;
#endif
#include <main.h>
#include<stdio.h>
int main(){

  printf("%d apple",t);
}
但cmake并没有在修改头文件时重建main.c。 我希望它自动生成头文件依赖项。 可以使用cmake吗


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

来自
AUX\u SOURCE\u目录的cmake 2.8.0文档

使用此命令可以避免写入源代码列表 库或可执行目标的文件虽然这似乎有效, CMake无法生成知道 已添加新的源文件。通常生成的生成系统 知道何时需要重新运行CMake,因为CMakeLists.txt文件 已修改以添加新源。当源刚刚添加到 目录,而不修改此文件,则必须手动 重新运行CMake以生成包含新文件的生成系统


为什么要避免创建文件列表?这样的列表通常不会经常更改。

正如我在评论中提到的,我已经尝试了您的示例,并且效果良好:如果修改了
main.h
,那么将重新编译
main.c

我安装的CMake(版本2.8.0)告诉我要添加

cmake_minimum_required(VERSION 2.8)

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

为谷歌搜索的其他人回答这个问题


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

对于这个示例,依赖关系管理对我来说很好(在Linux上使用GCC和CMake 2.8.0).@antonakos是否正在重新编译修改main.h头文件的项目?@antonakos指定最低版本为2.8,是否可以将您的评论作为答案?很抱歉,您的答案超出范围。我的问题是,cmake不会在头文件更改时重建项目。@VivekGoel-Crap,你说得对。我误认为它也适用于文件修改。谢谢你指出我的错误。