Сборка C библиотеки с CMakeLists.txt при упаковке python библиотеки - PullRequest
0 голосов
/ 08 апреля 2020

Я использую Cython, чтобы обернуть библиотеку C и расширить ее функциональность. Библиотека C разработана отдельной командой и поставляется с CMakeLists.txt. Сейчас я использую файлы source. c и .h для создания этой библиотеки. Вот как выглядит мой build.py файл для поэзии (setup.py аналог):

...
# source_files_paths - list of full paths to .c files
c_library = ('c_library', {'sources': source_files_paths})
...
def build(setup_kwargs):
    setup_kwargs.update({
        ...,
        'libraries': [c_library],  # Here c library is built with build_clib command
        ...
    })

Можно ли использовать CMakeLists.txt для построения c_library в функции build (или в setuptools.setup function)?

UPD: Также можно определить переменную, которая используется в c файлах. Я попытался добавить define_macros:

c_library = ('c_library', {'sources': source_files_paths,
                           'define_macros': [('MY_MACRO': True)]})

Все еще не повезло с этим.

UPD2: Я наконец нашел решение своей проблемы, хотя это не ответь на мой начальный вопрос. Чтобы добавить макросы, вы должны добавить его следующим образом:

c_library = ('c_library', {'sources': source_files_paths,
                           'macros': [('MY_MACRO': True)]})

В соответствии с функцией build_libraries из http://svn.python.org/projects/python/branches/pep-0384/Lib/distutils/command/build_clib.py вы также можете указать 'include_dirs', 'obj_deps' и 'cflags Аргументы.

...