簡體   English   中英

如何在waf構建系統中安裝具有不同名稱的庫?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM