代码之家  ›  专栏  ›  技术社区  ›  clstaudt

从文件中读取SCons环境设置

  •  1
  • clstaudt  · 技术社区  · 12 年前

    多个开发人员在一个项目上工作,每个开发人员都有不同的依赖项、编译器等路径。目前,所有开发人员都共享一个 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文件随着每个开发人员的增加而变长。是否有可能将环境设置源于每个开发人员都需要修改的设置文件?

    1 回复  |  直到 12 年前
        1
  •  2
  •   Community Mohan Dere    9 年前

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

    • 您可以让每个开发人员指定环境变量和这些环境变量 可以通过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 (Build System) Variables : load config file with custom/unknown values