我尝试为我的waf添加一个外部库:winmm.lib库
现在看起来像这样:
srcs = ['timers.cpp']
LIBS ='winmm.lib';
create_lib('timers', srcs,LIBS)
它不起作用。它说我在当前的库中找不到vmp库'winmm.lib.py'。
有人可以帮忙吗?
答案 0 :(得分:6)
我从来没有听说过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和堆栈跟踪,以便更容易回答您的问题。
答案 1 :(得分:0)
我想出来了,步骤如下:
在wscript文件中的configure函数中添加了以下检查。这告诉脚本检查给定的库文件(在本例中为libmongoclient),并将此检查的结果存储在MONGOCLIENT中。
conf.check_cfg(package='libmongoclient', args=['--cflags', '--libs'], uselib_store='MONGOCLIENT', mandatory=True)
完成此步骤后,我们需要将包配置文件(.pc)添加到/ usr / local / lib / pkgconfig路径中。这是我们指定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}
将依赖项添加到sepcific程序的构建函数中,该函数依赖于上述库(即MongoClient)。以下是一个例子。
mobility = bld( target='bin/mobility', features='cxx cxxprogram', source='src/main.cpp', use='mob-objects MONGOCLIENT', )
在此之后,再次运行configure,并构建您的代码。