waf - как добавить внешнюю библиотеку в файл wscript_build - PullRequest
0 голосов
/ 26 января 2012

Я попытался добавить внешнюю библиотеку в свой waf: библиотека winmm.lib

теперь это выглядит так:

srcs = ['timers.cpp']

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

это не работает. В нем говорится, что библиотека vmp 'winmm.lib.py' не найдена в текущей библиотеке.

может кто-нибудь помочь?

Ответы [ 2 ]

6 голосов
/ 26 января 2012

Я никогда не слышал о "create_lib" в waf, поэтому я понятия не имею, что это за функция или что она делает, но я все равно попробую ответить на ваш вопрос Ниже у меня есть очень простой 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 и трассировку стека, чтобы было проще ответить на ваш вопрос.

0 голосов
/ 05 мая 2015

Я понял это, и шаги следующие:

Добавлена ​​следующая проверка в функции конфигурации в файле wscript.Это заставляет скрипт проверять наличие указанного файла библиотеки (в данном случае libmongoclient), и мы сохраняем результаты этой проверки в MONGOCLIENT.

conf.check_cfg(package='libmongoclient', args=['--cflags', '--libs'], uselib_store='MONGOCLIENT', mandatory=True)

После этого шага нам нужно добавить файл конфигурации пакета(.pc) в / usr / local / lib / pkgconfig путь.Это файл, в котором мы указываем пути к lib и заголовкам.Вставка содержимого этого файла ниже.

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

После этого снова запустите конфигурацию и соберите свой код.

...