Heim >Backend-Entwicklung >C++ >Wie kann die setuptools-Erweiterung erweitert werden, um die CMake-Integration in eine Python-Datei setup.py zu ermöglichen?
Erweiterung der setuptools-Erweiterung zur Aktivierung von CMake in setup.py
Einführung
Beim Erstellen von Python Bei Erweiterungen, die für komplexe Buildprozesse stark von C-Bibliotheken und CMake abhängen, bietet das Standardskript setup.py möglicherweise nicht genügend Flexibilität. Durch die Integration von CMake in den Setup.py-Build-Prozess kann die Kontrolle über die Kompilierungs- und Verknüpfungsphasen erheblich verbessert werden, was zu effizienteren und individuelleren Builds führt.
Integration von CMake in Setup.py
Um die setuptools-Erweiterung zu erweitern und CMake zu nutzen, können die folgenden Schritte unternommen werden:
Überschreiben der Befehlsklasse build_ext:
Erweitern Sie build_ext Befehlsklasse in setup.py, um den Erweiterungserstellungsprozess anzupassen. Dies ermöglicht die Einbindung von CMake-Befehlen zum Konfigurieren und Erstellen von Erweiterungsmodulen.
Registrieren einer benutzerdefinierten Befehlsklasse:
Registrieren Sie die benutzerdefinierte Befehlsklasse build_ext im command_classes-Wörterbuch von setup.py. Dadurch wird der erweiterte Befehl während des Setup-Vorgangs verfügbar, sodass CMake als Teil des Builds aufgerufen werden kann.
Beispielimplementierung
Bedenken Sie Folgendes Folgender Beispielcode:
<code class="python">from setuptools import setup, Extension from setuptools.command.build_ext import build_ext class CMakeExtension(Extension): # override build_ext for this special extension def __init__(self, name): super().__init__(name, sources=[]) class build_ext(build_ext): def run(self): super().run() # build CMake extension for ext in self.extensions: self.build_cmake(ext) def build_cmake(self, ext): # build commands using CMake cwd = pathlib.Path().absolute() os.chdir(str(cwd)) self.spawn(['cmake', str(cwd)] + cmake_args) self.spawn(['cmake', '--build', '.'], shell=True) os.chdir(str(cwd)) setup( name='...', version='...', packages=['...'], ext_modules=[CMakeExtension('...')], cmdclass={ 'build_ext': build_ext, } )</code>
Vorteile der Integration von CMake
Die Integration von CMake bietet mehrere Vorteile für die Erstellung von Python-Erweiterungen:
Das obige ist der detaillierte Inhalt vonWie kann die setuptools-Erweiterung erweitert werden, um die CMake-Integration in eine Python-Datei setup.py zu ermöglichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!