Waf: укажите имя библиотеки для расширений Python - PullRequest
4 голосов
/ 24 января 2012

сборка библиотек с помощью waf - это хорошо, и мне нравится схема именования lib<targetname>.Но когда я использую это с boost :: python, я бы хотел избавиться от него: я бы хотел, чтобы имя библиотеки совпадало с именем цели.Я знаю, что это просто простое переименование, но: могу ли я сказать, чтобы waf не указывал lib перед целевым именем (альтернативно: укажите собственное имя, которое остается нетронутым)?

1 Ответ

3 голосов
/ 24 января 2012

Хорошо, понял.Эту функцию можно включить с помощью инструмента python, который можно найти здесь: http://docs.waf.googlecode.com/git/apidocs_16/tools/python.html#module-waflib.Tools.python

Основная задача - вызвать conf.init_pyext(), а в директиве сборки для общей библиотеки указать features='pyext':

def options(opt):
        opt.load('python')

def configure(conf):
    conf.load('python')
    conf.check_python_version((2,4,2))
    conf.check_python_headers()

def build(bld):

    bld.shlib(
        features = 'pyext',
        source = "mymodule.cpp",
        target = "myfoo",
        use = "PYTHON BOOST_PYTHON")

Теперь в каталоге сборки есть общая библиотека с именем myfoo.so, которая может быть непосредственно import ed.

...