我想用waf构建一个库,但是使用与目标名称不同的名称安装它.看来你可以做到
bld.shlib(..., install_path='${PREFIX}/lib')
Run Code Online (Sandbox Code Playgroud)
但我需要能够做到这样的事情:
bld.shlib(..., install_as='${PREFIX}/lib/xyz')
Run Code Online (Sandbox Code Playgroud)
此外,bld.install_as()不会工作,因为它似乎不接受任务作为目标,我无法弄清楚如何将任务变成代表目标的节点,所以以下也不起作用:
tgt = bld.shlib(...)
bld.install_as('foo', tgt)
Run Code Online (Sandbox Code Playgroud)
或者,我需要能够禁用自动添加到库名称的"lib"前缀,但仅适用于这一个库 - 在构建期间不适用于所有库,例如:
bld.shlib(..., libprefix='', install_path="${PREFIX}/lib/")
Run Code Online (Sandbox Code Playgroud)
我知道你也可以设置shlib_PATTERN,但这似乎会影响当前环境下的所有库.我们有一个非常复杂的构建,它使用许多不同的环境来同时构建调试/发布,所以只是克隆当前环境并更改标志也不起作用,因为它克隆了默认环境,而不是最终构建目标的环境under(因为我们在构建期间克隆了每个环境的目标).
有什么想法吗?谢谢!
你可以这样做:
hello_lib = bld.shlib(
includes='/usr/include/python',
source='a.cpp',
target='hello',
uselib='BOOST_PYTHON',
vnum='0.0.1')
hello_lib.env.cxxshlib_PATTERN = '%s.so'
Run Code Online (Sandbox Code Playgroud)
此代码仅更改一个任务的命名模式.
| 归档时间: |
|
| 查看次数: |
1471 次 |
| 最近记录: |