Scons没有指定CPPPATH,仍然可以检测到.h依赖?

时间:2017-01-15 07:56:45

标签: c++ compilation dependencies scons

例如,我有一个名为1.h的头文件:

#define MY 3

然后我有一个名为myc和1.c和f.c文件的子目录:

$ cat 1.c
void f();
int main()
{
    return 0;
}
$ cat f.c
#include"../1.h"
#include<stdio.h>
void f(){printf("hello %d\n",MY);}

$ cat SConscript 
Program('my2files',['1.c','f.c'])

运行scons,好的。然后我将1.h改为

    #define MY 2

我没有在我的SConstruct中指定CPPPATH = .. /,所以我希望scons可以检测到这种依赖。我再次运行scons,好吧,似乎检测到了这个更改,并且再次编译了.c文件。

我的问题是,CPPPATH隐含无用吗?是scons还是gcc可以检测头文件的变化?

1 个答案:

答案 0 :(得分:2)

根据SCons文档,它似乎仅由SCons自动添加

  

与$ LIBPATH变量一样,$ CPPPATH变量可能是一个列表   目录,或由系统特定路径分隔的字符串   分离字符(POSIX / Linux上的':',';'在Windows上)。无论哪种方式,   SCons创建正确的命令行选项,以便以下内容   例如:

Program('hello.c', CPPPATH = ['include', '/home/project/inc'])

Scons CPPPATH DOC