Scons 没有指定 CPPPATH,仍然可以检测到 .h 依赖吗?
Scons doen't specify CPPPATH, could still detect .h dependency?
例如,我有一个名为 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,OK.Then我把1.h改成了
#define MY 2
我没有在我的 SConstruct 中指定 CPPPATH=../,所以我希望 scons 可以检测到这种依赖关系。我再次 运行 scons,好吧,似乎检测到这个变化并且 .c 文件被再次编译。
我的问题是,CPPPATH 是否隐式无用?是scons还是gcc可以检测到头文件的变化?
根据 SCons 文档,它似乎仅由 SCons 自动添加
Like the $LIBPATH variable, the $CPPPATH variable may be a list of
directories, or a string separated by the system-specific path
separation character (':' on POSIX/Linux, ';' on Windows). Either way,
SCons creates the right command-line options so that the following
example:
Program('hello.c', CPPPATH = ['include', '/home/project/inc'])
司康斯CPPPATH DOC
例如,我有一个名为 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,OK.Then我把1.h改成了
#define MY 2
我没有在我的 SConstruct 中指定 CPPPATH=../,所以我希望 scons 可以检测到这种依赖关系。我再次 运行 scons,好吧,似乎检测到这个变化并且 .c 文件被再次编译。
我的问题是,CPPPATH 是否隐式无用?是scons还是gcc可以检测到头文件的变化?
根据 SCons 文档,它似乎仅由 SCons 自动添加
Like the $LIBPATH variable, the $CPPPATH variable may be a list of directories, or a string separated by the system-specific path separation character (':' on POSIX/Linux, ';' on Windows). Either way, SCons creates the right command-line options so that the following example:
Program('hello.c', CPPPATH = ['include', '/home/project/inc'])
司康斯CPPPATH DOC