Расширение пакета C++ с использованием инструментов настройки вместе с файлом-заглушкой. ⇐ C++
-
Anonymous
Расширение пакета C++ с использованием инструментов настройки вместе с файлом-заглушкой.
Итак, у меня есть следующая структура файла:
проект/ ├─ cpp_src/ │ ├─ источник/ │ │ ├─ исходные файлы cpp │ ├─ тест/ │ │ ├─ тестовые файлы cpp │ ├─ CMakeLists.txt │ ├─ stub.pyi ├─ python_src/ │ ├─ ... ├─ build.py В моем файле build.py я использую setuptools для компиляции и упаковки расширения C++ в cpp_src с помощью специальной команды build_ext. Однако мне не удается включить сюда файл-заглушку stub.pyi. Как я могу изменить команду setuptools, чтобы сделать это? Меня не особо беспокоит структура файла, поэтому, если в cpp_src необходим еще один файл setup.py, это нормально.
Я также использую Poetry для управления виртуальной средой, если это помогает. Более того, если есть другая система сборки, которая облегчит эту задачу, я был бы рад ее использовать.
Спасибо.
РЕДАКТИРОВАТЬ: это сокращенная версия файла build.py (полный репозиторий здесь https://github.com/Aspect1103/Hades/tre ... ation-rust):
подпроцесс импорта из пути импорта pathlib из setuptools import Расширение, настройка из setuptools.command.build_ext импортируйте build_ext класс CMakeBuild (build_ext): def build_extension(self, ext: Extension) -> Нет: # Определить, куда расширение должно быть перенесено после его # скомпилировано текущий_каталог = Путь.cwd() build_dir = текущий_dir.joinpath(self.get_ext_fullpath(ext.name)).parent # Определите профиль для создания расширения CMake с помощью профиль = "Выпуск" # Убедитесь, что каталог сборки существует build_temp = Путь(self.build_temp).joinpath(ext.name) если не build_temp.exists(): build_temp.mkdir(родители=True) # Скомпилируйте и создайте расширение CMake подпроцесс.run( [ "смэйк", текущий_dir.joinpath(ext.sources[0]), е"-DDO_TESTS=ложь", f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{profile.upper()}={build_dir}", ], cwd=build_temp, проверка=Истина, ) подпроцесс.run( ["cmake", "--build", ".", f"--config {profile}"], cwd=build_temp, check=True ) защита основной(): настраивать( name="hades_extensions", script_args=["bdist_wheel"], ext_modules=[Расширение("hades_extensions", ["cpp_src"])], cmdclass = {"build_ext": CMakeBuild}, ) если __name__ == "__main__": основной()
Итак, у меня есть следующая структура файла:
проект/ ├─ cpp_src/ │ ├─ источник/ │ │ ├─ исходные файлы cpp │ ├─ тест/ │ │ ├─ тестовые файлы cpp │ ├─ CMakeLists.txt │ ├─ stub.pyi ├─ python_src/ │ ├─ ... ├─ build.py В моем файле build.py я использую setuptools для компиляции и упаковки расширения C++ в cpp_src с помощью специальной команды build_ext. Однако мне не удается включить сюда файл-заглушку stub.pyi. Как я могу изменить команду setuptools, чтобы сделать это? Меня не особо беспокоит структура файла, поэтому, если в cpp_src необходим еще один файл setup.py, это нормально.
Я также использую Poetry для управления виртуальной средой, если это помогает. Более того, если есть другая система сборки, которая облегчит эту задачу, я был бы рад ее использовать.
Спасибо.
РЕДАКТИРОВАТЬ: это сокращенная версия файла build.py (полный репозиторий здесь https://github.com/Aspect1103/Hades/tre ... ation-rust):
подпроцесс импорта из пути импорта pathlib из setuptools import Расширение, настройка из setuptools.command.build_ext импортируйте build_ext класс CMakeBuild (build_ext): def build_extension(self, ext: Extension) -> Нет: # Определить, куда расширение должно быть перенесено после его # скомпилировано текущий_каталог = Путь.cwd() build_dir = текущий_dir.joinpath(self.get_ext_fullpath(ext.name)).parent # Определите профиль для создания расширения CMake с помощью профиль = "Выпуск" # Убедитесь, что каталог сборки существует build_temp = Путь(self.build_temp).joinpath(ext.name) если не build_temp.exists(): build_temp.mkdir(родители=True) # Скомпилируйте и создайте расширение CMake подпроцесс.run( [ "смэйк", текущий_dir.joinpath(ext.sources[0]), е"-DDO_TESTS=ложь", f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{profile.upper()}={build_dir}", ], cwd=build_temp, проверка=Истина, ) подпроцесс.run( ["cmake", "--build", ".", f"--config {profile}"], cwd=build_temp, check=True ) защита основной(): настраивать( name="hades_extensions", script_args=["bdist_wheel"], ext_modules=[Расширение("hades_extensions", ["cpp_src"])], cmdclass = {"build_ext": CMakeBuild}, ) если __name__ == "__main__": основной()
Мобильная версия