如何使用SCONS / CPPPATH:找不到来源

时间:2013-11-01 12:43:14

标签: c++ scons

我正在使用Scons / Sconstruct构建一个具有以下目录结构的项目:

+A
|--A1
|--A2
+B
|--B1
  |-b1.cpp

“A”目录包含B1中的sconstruct文件所引用的代码,如下所示 scontruct文件(在此简化使用):

env = Environment(CPPPATH=['.', '../../']
source_common = 'A/A1/source.cpp'
env.Program( target = 'b1_exec', source = ['b1.cpp', source_common] )

但是,在编译时,我收到一条错误,指出无法找到A / A1 / source.cpp。我原本以为添加CPPPATH参数会让编译器找到source.cpp文件。我似乎要围成一圈,所以非常感谢任何帮助。

感谢。

1 个答案:

答案 0 :(得分:2)

使用SCons构建时要记住的首要规则之一是要构建的源代码必须与根级SConstruct脚本位于同一目录/子目录中。您可以考虑几个选项:

  1. 将SConstruct放在A和B的根目录下,这将控制两个子目录的构建。

  2. 使每个目录(A和B)成为单独的项目,每个目录都有自己的SConstruct。然后,项目B将引用在项目A中单独构建的库。

  3. 选择取决于项目的性质和您的要求。选项2的缺点是,如果A1或A2中的源文件发生变化,则在编译项目B时不会检测到,因为项目B只会知道项目A中的库/标题。

    关于CPPPATH构造变量:此变量配置头文件的位置。如果此项目使用gcc / g ++编译器在Linux(或其他Unix变体)上,则CPPPATH变量配置'-I'编译器标志。请记住,在设置CPPPATH变量时,不必包含'-I'标志,SCons将以独立于平台的方式添加它(意味着它将根据所使用的平台和编译器进行设置)。