使用SCons实现“安装”目标

时间:2009-05-28 04:14:51

标签: scons

我尝试设置构建系统来构建共享库 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))

当我运行没有命令行参数的SCons时,会构建MySharedLib和MyBinary,但它也会尝试安装它们。我只想在我要求安装目标时安装它们。我多次尝试,阅读文档,但我无法弄明白。

1 个答案:

答案 0 :(得分:6)

默认情况下,当scons脚本中没有设置目标时,scons会在'。'中构建每个目标。您可以使用默认功能控制默认构建的目标:

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什么都不构建,虽然你可以创建一个假人目标。