> 백엔드 개발 > C++ > 본문

다음은 질문과 답변 형식을 염두에 두고 몇 가지 제목 옵션입니다. 옵션 1(직접 및 집중): * Python 확장 구축을 위해 CMake를 setuptools에 어떻게 통합할 수 있나요? 옵션 2(높음

Mary-Kate Olsen
풀어 주다: 2024-10-27 02:11:02
원래의
234명이 탐색했습니다.

Here are a few title options, keeping in mind the question-and-answer format:

Option 1 (Direct and Focused):

* How can I integrate CMake into setuptools for Python extension building?

Option 2 (Highlighting the Challenge):

*  Overriding `build_ext` in

setup.py에서 CMake 통합을 위한 setuptools 확장 확장

배경

C 라이브러리를 활용하고 컴파일을 위해 CMake를 활용하는 Python 확장으로 작업할 때, CMake를 setup.py 확장 건물에 통합하여 빌드 프로세스를 간소화해야 할 필요성이 발생합니다. 이 질문은 setuptools 확장 메커니즘을 확장하여 CMake를 빌드 프로세스의 일부로 통합할 수 있는 가능성을 탐구합니다.

CMakeExtension으로 빌드 프로세스 재정의

이 통합을 달성하는 핵심 개념은 setuptools build_ext 명령. 이는 기존 build_ext 기능을 래핑하고 확장 모듈 컴파일을 위해 CMake를 호출하도록 수정하는 사용자 정의 build_ext 클래스를 생성하여 수행할 수 있습니다.

또한 CMakeExtension이라는 새로운 확장 클래스가 도입되었습니다. 이 클래스는 빈 소스 목록으로 확장을 초기화하여 CMakeExtension에서 상속되는 확장에 대한 기본 build_ext 동작을 효과적으로 비활성화합니다.

구현

<code class="python">class CMakeExtension(Extension):
    def __init__(self, name):
        super().__init__(name, sources=[])

class build_ext(build_ext_orig):
    def run(self):
        for ext in self.extensions:
            self.build_cmake(ext)
        super().run()

    def build_cmake(self, ext):
        # Define CMake arguments and build arguments
        # Perform CMake configuration and build processes</code>
로그인 후 복사

CMakeExtension 사용법

<code class="python">setup(
    name='your_project_name',
    version='0.1',
    packages=['package_name'],
    ext_modules=[CMakeExtension('package_name.extension_module_name')],
    cmdclass={
        'build_ext': build_ext,
    }
)</code>
로그인 후 복사

결론

CMakeExtension으로 setuptools 확장 메커니즘을 확장하고 build_ext 명령을 재정의함으로써 CMake를 확장 구축 프로세스에 원활하게 통합하여 Python 확장용 C 라이브러리를 효율적이고 자동화된 컴파일이 가능해졌습니다.

위 내용은 다음은 질문과 답변 형식을 염두에 두고 몇 가지 제목 옵션입니다. 옵션 1(직접 및 집중): * Python 확장 구축을 위해 CMake를 setuptools에 어떻게 통합할 수 있나요? 옵션 2(높음의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!