有没有办法为我的系统设置scons将使用的环境变量,而不必更改SConstruct文件?例如,我想在Windows上使用MinGW而不是VC ++来构建我的C ++。当然,我可以在我的SConstruct文件中执行此操作:
env = Environment(tools = ['mingw'])
但是,如果我这样做,那么我就可以将内容编辑到我的构建文件中,使其特定于我的特定系统配置。在我看来,这破坏了便携式构建系统的整个目的。如果我上传它作为我的存储库的一部分供其他人构建,他们可能没有使用MinGW。他们可能想要使用VC ++或Clang,并且我认为他们不应该为了构建程序或库而修改构建文件(或存储库中的任何其他内容)。理想情况下,在具有功能性C ++工具链和安装了的scons的环境中的任何人都应该能够在命令行上键入scons
,并且事情应该顺利进行。不是scons的(或者)目标吗?还是我误解了它的目的?
另一件事是路径。上面的行甚至不够,我还是要导入MinGW二进制文件的路径。我已经读过这个理由。但它只是更多系统特定的信息,我必须放在我的构建文件中,其他人可能会使用所选择的路径不适用。
答案 0 :(得分:0)
我认为你确实理解了SCons关于便携式和多平台的目的:)
这里的问题是如果您的系统上有多个编译器可供选择,如何告诉SCons使用哪一个。默认情况下,SCons将查找并使用特定于您系统的编译器(例如,Windows上的VC ++或Linux上的g ++)。
我至少可以想到两种告诉SCons使用哪种编译器的方法,这两种方法都需要构建脚本中的额外逻辑,但可以以可移植的方式完成:
答案 1 :(得分:0)
尝试在其中一个目录中编辑文件site_init.py
:
%ALLUSERSPROFILE/Application Data/scons/site_scons
%USERPROFILE%/Local Settings/Application Data/scons/site_scons
%APPDATA%/scons/site_scons
%HOME%/.scons/site_scons
./site_scons
在该文件中,添加如下所示的行:
DefaultEnvironment(tools = ['mingw'])
或者这个:
DefaultEnvironment(tools = ['default', 'mingw'])