我们在项目中使用boost,我们通过命令构建器从源代码构建。但是我在支持多种不同构建的平台上遇到了问题。即在Linux机器上,我们支持Linux& Android版本的提升。
如果我运行Android构建,然后运行Linux构建,则构建器会重建。即因为目标&源文件名是相同的(即使二进制文件不是)。
我想让我的构建器知道正在构建哪个版本的boost。我想使用类似于CPPDEFINES变量的东西。每当此变量的值在程序或库上发生更改时,目标都会重建。
这可能吗?到目前为止,我所拥有的最好的想法是使用扫描仪的路径参数。但这看起来不正确。
如何创建SCons应使用的构建器特定变量(如源和目标)来触发构建。即重建提升,因为MYVARIABLE已经改变。
答案 0 :(得分:3)
您不希望创建SCons可以使用的构建器特定变量(添加了一些技巧)来决定它应该构建哪个版本的软件。 您正在寻找UserGuide(http://www.scons.org/doc/production/HTML/scons-user.html)中描述的“变体构建”,第二章。 15“分离源和构建目录”。这将使您能够从相同的源并行创建多个“变体”(不同的PATH,CPPPATH,无论什么,设置)(完全支持“-j”)。 这是构建任务的预期方案,正如您所描述的那样,并且每一个看起来很诱人的黑客可能会在以后引发麻烦。
请不要直接使用VariantDir()方法,而是使用SConscript()调用的“variant_dir =”选项(参见UserGuide中的第15.1节)。