[英]how to install a library with a different name in waf build system?
我想用waf構建一個庫,但是使用與目標名稱不同的名稱安裝它。 看來你可以做到
bld.shlib(..., install_path='${PREFIX}/lib')
但我需要能夠做到這樣的事情:
bld.shlib(..., install_as='${PREFIX}/lib/xyz')
此外,bld.install_as()不會工作,因為它似乎不接受任務作為目標,我無法弄清楚如何將任務變成代表目標的節點,所以以下也不起作用:
tgt = bld.shlib(...)
bld.install_as('foo', tgt)
或者,我需要能夠禁用自動添加到庫名稱的“lib”前綴,但僅適用於這一個庫 - 在構建期間不適用於所有庫,例如:
bld.shlib(..., libprefix='', install_path="${PREFIX}/lib/")
我知道你也可以設置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'
此代碼僅更改一個任務的命名模式。
您可以使用兩個關鍵字參數:“name”和“target”。 “target”是文件create的名稱,而Name是使用“--target”參數時的目標名稱。 令人困惑,但這是一個例子:
bld(features=['cxx','cxxshlib'],
source=src,
includes=inc,
target='OutputName',
name='NameOfTarget',
use=libs,
install_path='${PREFIX}/lib/MyLibs
)
waf configure build install --target=NameOfTarget --prefix=/home/Brian
這將創建一個共享庫“libOutputName.so”並將其安裝到/ home / Brian / lib / MyLib
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.