1

多个开发人员在一个项目上工作,每个开发人员都有不同的依赖关系、编译器等路径。目前,所有开发人员共享一个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 文件都会变长。是否可以将环境设置导出到需要每个开发人员修改的设置文件?

4

1 回答 1

2

有几种方法可以解决此问题:

  • 您可以让每个开发人员指定环境变量,这些环境变量可以由您的 SConscript 使用 pythons os.environ 方法准备好
  • 你可以使用 scons 变量
  • 您可以创建一个由 scons 脚本读取的配置文件。

例如,因为我看到您正在使用 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(构建系统)变量:使用自定义/未知值加载配置文件

于 2013-10-17T23:46:16.377 回答