如何在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,但这似乎会影响当前环境下的所有库。我们有一个相当复杂的构建,使用了很多不同的环境来同时构建调试/发布,所以仅仅克隆当前环境并改变标志也不能工作,因为它克隆的是默认环境,而不是目标最终构建的环境(因为我们在构建时克隆了每个环境的目标)。
任何想法吗?谢谢!
你可以这样做:
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"answers"target"。"target"是创建的文件的名称,而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 "。并将其安装到/home/brian/lib/mylib
相关文章:
- 在Ubuntu 16.04上安装Cilk时出现问题
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- C++:如何在CLion IDE中安装Boost
- 安装opencv失败-粘贴CMakeError.log的内容
- 在cygwin中测试新的boost安装时出现cpp错误
- 有人安装"IITB Simplecpp in mac"吗?
- 我可以在 Arduino 的库文件夹之外安装库吗?
- Mingw-64 在构建和安装后不会编译 openCV 代码
- 为什么构建目录中新构建的共享库与安装目录中的副本具有不同的依赖项集?
- 安装 libc++ 时出现问题
- 安装MinGW后C++编译器不起作用?
- 介子复制/安装头文件到输出目录并保持文件夹结构
- 无法安装 R 包 "nloptr"(Ubuntu 16.04 上的 R3.6.2) - C++编译器问题
- 如何在 Ubuntu 上安装 OpenCV for C/C++
- 检查是否安装了 windows10 C++
- 安装 psutil 和为 pypy 配置期间出错
- 如何在 Debian 10 上安装 CPP 手册页?
- 如何更改使用 CPack 安装的可执行文件的名称?
- 使用 MinGW 在 Windows 上安装 GMP 时出错
- 如何在waf构建系统中安装具有不同名称的库