scons - 如何通过从命令行调用其父 SConstruct 来指定要在 SConscript 文件中定义的目标库?
问题描述
我已经定义了两个库 - 一个静态库,一个共享库 - 构建在带有SConscript
文件的“库”子目录中。然后SConscript
从父目录中调用SConstruct
它,该目录会努力构建两个库。
D:\tony\libraries\SConscript:
# Define environmental/project constants
CPPPATH = ['../headers']
SOURCES = ['greeter.cxx']
# Inherit the parent environment and update values if necessary.
Import('env')
# Build targets using defined environment variables.
print "Building libraries"
env.StaticLibrary(target = 'lib_greeter.a', source = SOURCES, CPPPATH = CPPPATH)
env.SharedLibrary(target = 'greeter.dll', source = SOURCES, CPPPATH = CPPPATH)
D:\tony\S构造:
# Define environmental/project constants
TOOLS = ['gcc', 'g++', 'gnulink', 'ar']
PATH = ['C:/cygwin/bin']
CYGWIN = ['nodosfilewarning']
DECIDER = 'MD5-timestamp' # Use a combination of timestamps and checksums to decide if dependencies have changed.
# Initialize the Default Environment and update values.
env = DefaultEnvironment(tools=TOOLS)
env['ENV']['PATH'] = PATH
env['ENV']['CYGWIN'] = CYGWIN
env.Decider(DECIDER)
# Call subsidiary SConscript files with defined environment variables.
SConscript('libraries/SConscript', exports = 'env', duplicate = 0) # do not copy src files to build directory.
但是,在 cmd 行上greeter.dll
调用时,我如何指定我只希望构建其中一个库(例如)?scons
我之前定义了一些自定义命令行选项AddOption
来引入一些流控制,但不知何故感觉不太对劲。
解决方案
您的问题可以通过以下两种方式之一阅读:
- 如何通过在命令行上命名来选择要构建的目标。
- 如果命令行上没有命名目标,我如何安排
greeter.dll
默认构建的东西。
如果您的问题是关于第一种情况,您可以在调用 SCons 时命名生成文件的路径。鉴于您的文件,我希望它看起来像scons libraries\greeter.dll
.
如果您询问第二种情况,您可以env.Default("greeter.dll")
在您的, 中使用SConscript
,然后当您调用不带参数的 SCons 时,它将自动构建。
推荐阅读
- angular - 无法使用 API 获取的数据初始化图表的结果
- python - 如何从 Python 加载保存为 RDS 文件的模型并进行预测?
- php - 硒和 php
- visual-studio-code - 如何在vs代码中从终端打开目录?但在同一个窗口内
- jquery - 更改焦点上的 asp lixt 框的颜色
- matlab - 如何在 MATLAB 中为曲面的不同侧选择不同的颜色
- scala - 为什么 Scala 无法将此函数编译为尾递归?
- javascript - MongoError:E11000 重复键错误集合:test.users 索引:email1_1 重复键:{ email1:null }
- sql - SQL 视图 - 结果与选择不同
- cluster-analysis - 如何在jupyter笔记本中显示seaborn clustermap Insider