我试图向我的 waf 添加一个外部库:winmm.lib 库
现在看起来像这样:
srcs = ['timers.cpp']
LIBS ='winmm.lib';
create_lib('timers', srcs,LIBS)
它不起作用。它说我在当前库中找不到 vmp 库“winmm.lib.py”。
有人可以帮忙吗?
我从未听说过 waf 中的“create_lib”,所以我不知道该函数是什么或做什么,但无论如何我都会尝试回答你的问题。下面我有一个非常基本的 wscript,这是我设置简单项目(在 linux 上)的典型方式。如果 waf 像它声称的那样独立于平台,那么这也应该适用于 Windows;我还没有测试过。这应该创建一个简单的共享库。
def options(opt):
opt.load('compiler_cxx')
def configure(cfg):
cfg.load('compiler_cxx')
cfg.check(compiler='cxx',
lib='winmm',
mandatory=True,
uselib_store='WINMM')
def build(bld)
srcs = ['timers.cpp']
libs = ['WINMM']
incs = ['.']
bld(features=['cxx','cxxshlib'],
source=srcs,
includes=incs,
target='timers',,
use=libs,
)
将来请提供您的整个 wscript 和堆栈跟踪,以便更容易回答您的问题。
我想通了,步骤如下:
在 wscript 文件的配置功能中添加了以下检查。这告诉脚本检查给定的库文件(在本例中为 libmongoclient),我们将检查的结果存储在 MONGOCLIENT 中。
conf.check_cfg(package='libmongoclient', args=['--cflags', '--libs'], uselib_store='MONGOCLIENT', mandatory=True)
在这一步之后,我们需要在 /usr/local/lib/pkgconfig 路径中添加一个包配置文件(.pc)。这是我们指定 lib 和 headers 路径的文件。在下面粘贴此文件的内容。
prefix=/usr/local
libdir=/usr/local/lib
includedir=/usr/local/include/mongo
Name: libmongoclient
Description: Mongodb C++ driver
Version: 0.2
Libs: -L${libdir} -lmongoclient
Cflags: -I${includedir}
在依赖于上述库(即MongoClient)的特定程序的构建函数中添加了依赖项。下面是一个例子。
mobility = bld( target='bin/mobility', features='cxx cxxprogram', source='src/main.cpp', use='mob-objects MONGOCLIENT', )
在此之后,再次运行配置,并构建您的代码。