0

我试图向我的 waf 添加一个外部库:winmm.lib 库

现在看起来像这样:

srcs = ['timers.cpp']

LIBS ='winmm.lib';
create_lib('timers', srcs,LIBS)

它不起作用。它说我在当前库中找不到 vmp 库“winmm.lib.py”。

有人可以帮忙吗?

4

2 回答 2

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 和堆栈跟踪,以便更容易回答您的问题。

于 2012-01-26T15:37:24.100 回答
0

我想通了,步骤如下:

在 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', )

在此之后,再次运行配置,并构建您的代码。

于 2015-05-05T17:32:14.373 回答