setup.py에서 CMake를 활성화하도록 setuptools 확장 확장
소개
Python 빌드 시 복잡한 빌드 프로세스를 위해 C 라이브러리 및 CMake에 크게 의존하는 확장의 경우 기본 setup.py 스크립트가 충분한 유연성을 제공하지 못할 수 있습니다. CMake를 setup.py 빌드 프로세스에 통합하면 컴파일 및 연결 단계에 대한 제어가 크게 향상되어 보다 효율적이고 사용자 정의된 빌드가 가능해집니다.
CMake를 Setup.py에 통합
setuptools Extension을 확장하고 CMake를 활용하려면 다음 단계를 수행할 수 있습니다.
build_ext 명령 클래스 재정의:
build_ext 확장 확장 구축 프로세스를 사용자 정의하기 위한 setup.py의 명령 클래스입니다. 이를 통해 CMake 명령을 통합하여 확장 모듈을 구성하고 빌드할 수 있습니다.
사용자 정의 명령 클래스 등록:
사용자 정의 build_ext 명령 클래스 등록 setup.py의 command_classes 사전에 있습니다. 이렇게 하면 설정 프로세스 중에 확장 명령을 사용할 수 있게 되어 CMake를 빌드의 일부로 호출할 수 있습니다.
구현 예
다음을 고려하세요. 다음 예제 코드:
<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>
CMake 통합의 장점
CMake를 통합하면 Python 확장을 빌드하는 데 여러 가지 이점이 있습니다.
위 내용은 Python setup.py 파일 내에서 CMake 통합을 활성화하기 위해 setuptools Extension을 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!