>  기사  >  백엔드 개발  >  Python setup.py 파일 내에서 CMake 통합을 활성화하기 위해 setuptools Extension을 어떻게 향상시킬 수 있습니까?

Python setup.py 파일 내에서 CMake 통합을 활성화하기 위해 setuptools Extension을 어떻게 향상시킬 수 있습니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 07:42:02832검색

How can setuptools Extension be enhanced to enable CMake integration within a Python setup.py file?

setup.py에서 CMake를 활성화하도록 setuptools 확장 확장

소개

Python 빌드 시 복잡한 빌드 프로세스를 위해 C 라이브러리 및 CMake에 크게 의존하는 확장의 경우 기본 setup.py 스크립트가 충분한 유연성을 제공하지 못할 수 있습니다. CMake를 setup.py 빌드 프로세스에 통합하면 컴파일 및 연결 단계에 대한 제어가 크게 향상되어 보다 효율적이고 사용자 정의된 빌드가 가능해집니다.

CMake를 Setup.py에 통합

setuptools Extension을 확장하고 CMake를 활용하려면 다음 단계를 수행할 수 있습니다.

  1. build_ext 명령 클래스 재정의:

    build_ext 확장 확장 구축 프로세스를 사용자 정의하기 위한 setup.py의 명령 클래스입니다. 이를 통해 CMake 명령을 통합하여 확장 모듈을 구성하고 빌드할 수 있습니다.

  2. 사용자 정의 명령 클래스 등록:

    사용자 정의 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 확장을 빌드하는 데 여러 가지 이점이 있습니다.

  • 제어 개선 C/C 컴파일 및 링크 프로세스
  • 복잡한 빌드 구성을 위해 CMake의 광범위한 기능을 활용하는 능력
  • 세밀하게 조정된 컴파일 설정을 통한 잠재적인 성능 최적화
  • C/와의 일관성 CMake를 빌드 시스템으로 사용하는 C 개발 워크플로우

위 내용은 Python setup.py 파일 내에서 CMake 통합을 활성화하기 위해 setuptools Extension을 어떻게 향상시킬 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.