题
我尝试设置一个构建系统来构建共享的lib mysharedlib 和二进制 细菌 依靠 mysharedlib. 。构建系统应该能够安装 mysharedlib 和 细菌 当要求它时,只有在被要求时。
import os.path
env = Environment()
env.Append(CCFLAGS='-g -Wall -ansi -O2')
prefix = '/usr/local'
lib_dir = os.path.join(prefix, 'lib')
bin_dir = os.path.join(prefix, 'bin')
Export('env prefix lib_dir bin_dir')
libMySharedLib = SConscript('libMySharedLib/SConscript')
MyBinary = SConscript('MyBinary/SConscript')
env.Alias('install', env.Install(lib_dir, libMySharedLib))
env.Alias('install', env.Install(bin_dir, MyBinary))
当我在没有命令行参数的情况下运行SCONS时,MySharedLib和Mybinary就会构建,但它也尝试安装它们。我希望它们仅在我要求的时候就安装 安装 目标。我尝试了很多次,阅读了文档,但我无法弄清楚。
解决方案
默认情况下,当没有目标设置为SCONS脚本中时,SCON会在'。'中构建每个目标。您可以默认使用默认函数来控制要构建的目标:
lib = SConscript('libMySharedLib/SConscript')
bin = SConscript('MyBinary/SConscript')
env.Alias('install', env.Install(lib_dir, lib))
env.Alias('install', env.Install(bin_dir, bin))
# By default (scons called with no explicit target), only build bin
Default(bin)
阿法克(Afaik),尽管我想我想创建一个虚拟目标,但没有办法告诉SCONS什么都不构建。
不隶属于 StackOverflow