Я использую 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 Аргументы.