多个开发人员在项目上工作,每个开发人员都有不同的依赖关系,编译器等路径。目前,所有开发人员共享一个SConstruct
文件。当新开发人员加入时,需要创建新的Environment
,例如:
## environment: macbook
macbook = Environment()
### include
macbook.Append(CPPPATH = ["/usr/local/Cellar/gcc48/4.8.1/gcc/include/c++/4.8.", \
"/Users/cls/workspace/gtest/include", \
"/usr/local/Cellar/log4cxx/0.10.0/include"])
稍后通过命令行参数选择环境。
这很有效,但它不是很优雅,因为每个开发人员都会使SConstruct文件变得更长。是否可以将环境设置输出到需要根据开发人员修改的设置文件?
答案 0 :(得分:2)
有几种方法可以解决这个问题:
例如,因为我看到你正在使用gtest。如果要指定gtest的路径,可以编写类似于此的脚本。
# build variables
vars = Variables()
vars.Add(EnumVariable('VARIANT', 'Build variant', 'debug', allowed_values('debug', 'release'))
vars.Add(PathVariable('GTEST_DIR', 'path to gtest', os.environ.get('GTEST_PATH'), PathVariable.PathIsDir))
## environment: macbook
macbook = Environment(variables = vars)
Help(vars.GenerateHelpText(macbook))
### include
macbook.Append(CPPPATH = ["/usr/local/Cellar/gcc48/4.8.1/gcc/include/c++/4.8.", \
"$GTEST_PATH/include", \
"/usr/local/Cellar/log4cxx/0.10.0/include"])
现在运行SCons时,添加构建变量
scons GTEST_PATH=/Users/cls/workspace/gtest VARIANT=release
如果您不想在每次运行时键入该值,可以指定环境变量GTEST_PATH
,也可以指定SCONSFLAGS
环境变量。
使用scons变量有帮助,因为当您键入scons -h
时,您将获得变量当前值和帮助文本的列表。
如果您希望自己可以创建一个可以读入的配置文件。我会查看这篇文章:
Scons (Build System) Variables : load config file with custom/unknown values