Я разрабатываю пакет Python, который содержит расширение C ++. Когда я устанавливаю пакет с помощью сценария setup.py или pip, все исходные файлы C ++ компилируются и связываются для получения одной библиотеки .so, которую затем можно импортировать в исходный код Python. Во время разработки мне нужно внести несколько изменений в исходный код (тестирование, отладка и т. Д.). Я считаю, что переустановка пакета включает в себя перестройку всех исходных файлов C ++, даже если была изменена только небольшая часть одного файла. Очевидно, что это занимает совсем немного времени.
Мне известен режим разработки (python setup.py development или pip install -e), который размещает ссылку на исходные файлы, так что сделанные изменения сразу видны при повторном импорте модуля. Однако это относится только к исходным файлам .py, а не к расширению C ++, которое необходимо перекомпилировать после каждого изменения.
Есть ли способ, чтобы setup.py просматривал файлы .o в каталоге сборки (находясь в режиме разработки) и использовал их временные метки, чтобы выяснить, какие из них нужно перекомпилировать? Я думаю о том, как GNU Make выполняет выборочную компиляцию на основе временных меток. Спасибо
Я бы порекомендовал использовать Make (другие системы сборки, такие как CMake) для разработки, а setup.py только для окончательной установки / развертывания. Я делал похожие проекты на Python + C ++, и это прекрасно работает.
Других решений пока нет …