我尝试设置一个构建系统来构建一个共享的lib MySharedLib和一个依赖MySharedLib的二进制MyBinary.构建系统应该能够在被要求时安装MySharedLib和MyBinary,并且只有在被要求时才能安装.
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))
Run Code Online (Sandbox Code Playgroud)
当我在没有命令行参数的情况下运行SCons时,会构建MySharedLib和MyBinary,但它也会尝试安装它们.我希望它们只在我要求安装目标时安装.我尝试了很多次,阅读了文档,但我无法弄明白.
默认情况下,当scons脚本中没有设置目标时,scons会在'.'中构建每个目标.您可以使用Default函数控制默认构建的目标:
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)
Run Code Online (Sandbox Code Playgroud)
AFAIK,没有办法告诉scons什么都不建,尽管你可以创建一个虚拟目标.
| 归档时间: |
|
| 查看次数: |
4997 次 |
| 最近记录: |