我正在使用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文件。我似乎正在转转,非常感谢您的帮助。
谢谢。
最佳答案
使用SCons进行构建时要记住的第一个规则是,要构建的源代码必须与根级SConstruct脚本位于同一目录/子目录中。您可以考虑以下几种选择:
选择仅取决于项目的性质和您的要求。选项2的缺点是,如果A1或A2中的源文件发生更改,则在编译项目B时将不会检测到该文件,因为项目B只知道项目A中的库/头。
关于
CPPPATH
构造变量:此变量配置头文件的位置。如果此项目是在带有gcc / g++编译器的Linux(或其他Unix变体)上,则CPPPATH
变量将配置“-I”编译器标志。请记住,在设置CPPPATH变量时,不必包括'-I'标志,SCons将以与平台无关的方式添加它(这意味着它将基于所使用的平台和编译器对其进行设置)。关于c++ - 如何使用SCONS/CPPPATH:找不到源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19726994/