Моя цель - собрать один модуль / расширение из нескольких исходных файлов на языке Си.Какая лучшая практика для достижения этой цели?
Что я пробовал:
Я знаю, что функция ffi.set_source
имеет дополнительные sources
и include_dir
kwargsи что должна быть возможность использовать эти kwargs для создания единого общего объекта из нескольких исходных файлов.К сожалению, я не могу найти ничего относительно этих kwargs в справочнике API CFFI Documentation .Поэтому я не могу понять детали.Есть ли какой-нибудь документ, который объясняет, как правильно использовать эти kwargs?
В настоящее время я использую:
SOURCES = ('file_1.c', 'file_2.c')
SRC_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), '../src')
ffi_builder = FFI()
ffi_builder.set_source(
'module_name._module_name',
''.join(f'#include "{source}"\n' for source in SOURCES),
include_dirs=[SRC_ROOT],
)
...
Хотя это на самом деле работает, мне кажется, это немного хакерски,Можно ли использовать sources
kwarg вместо 2-го позиционного arg source
?Это позволило бы мне избавиться от хакерской ''.join(f'#include "{source}"\n' for source in SOURCES)
части.
Если есть даже более простой подход, мне также было бы интересно!
Любая помощь приветствуется.Спасибо!