waf -how将外部库添加到wscript_build文件中

时间:2012-01-26 10:03:35

标签: wsh waf

我尝试为我的waf添加一个外部库:winmm.lib库

现在看起来像这样:

srcs = ['timers.cpp']

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

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

有人可以帮忙吗?

2 个答案:

答案 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,并构建您的代码。