6

C++ 拡張機能を含む python パッケージを開発しています。setup.py スクリプトまたは pip を使用してパッケージをインストールすると、C++ ソース ファイルがすべてコンパイルおよびリンクされ、1 つの .so ライブラリが取得されます。このライブラリは、Python ソース コードにインポートできます。開発中、ソース コードに複数の変更 (テスト、デバッグなど) を加える必要があります。パッケージを再インストールすると、1 つのファイルのほんの一部が変更されたとしても、すべての C++ ソース ファイルを再構築する必要があることがわかりました。明らかに、これにはかなりの時間がかかります。

ソースファイルへのリンクを配置する開発モード (python setup.py develop または pip install -e) を認識しているため、モジュールが再インポートされたときに変更がすぐに表示されます。ただし、これは .py ソース ファイルにのみ適用され、変更のたびに再コンパイルする必要がある C++ 拡張子には適用されません。

setup.py がビルド ディレクトリ内の .o ファイルを (開発モードで) 見て、それらのタイムスタンプを使用して、再コンパイルが必要なものを特定する方法はありますか? GNU Make がタイムスタンプに基づいて選択的コンパイルを実行する方法を考えています。ありがとう

4

1 に答える 1

2

開発には Make (CMake などの他のビルド システム) を使用し、最終的なインストール/展開には setup.py のみを使用することをお勧めします。同様の Python + C++ プロジェクトを行ったことがありますが、そのようにうまく機能します。

于 2013-10-17T12:46:15.377 に答える