setuptools 拡張機能を拡張して、Python setup.py ファイル内で CMake 統合を有効にするにはどうすればよいですか?

Linda Hamilton
リリース: 2024-10-26 07:42:02
オリジナル
831 人が閲覧しました

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 拡張機能を拡張して 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 開発ワークフロー

以上がsetuptools 拡張機能を拡張して、Python setup.py ファイル内で CMake 統合を有効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!