2013-10-15 32 views
2

我正在開發一個包含C++擴展的python包。當我使用setup.py腳本或使用pip安裝軟件包時,C++源文件都會被編譯和鏈接以獲取一個.so庫,然後可以將這些庫導入到Python源代碼中。在開發過程中,我需要對源代碼進行多處更改(測試,調試等)。我發現重新安裝軟件包涉及重建所有C++源文件,即使只有一個文件的一小部分發生了變化。顯然,這需要相當長的時間。Python C++擴展:只編譯修改後的源文件

我知道開發模式(python setup.py develop或pip install -e),它會鏈接到源文件,以便在重新導入模塊時立即看到所做的更改。但是,這僅適用於.py源文件,而不適用於每次更改後必須重新編譯的C++擴展。

有沒有一種方法讓setup.py查看構建目錄中的.o文件(處於開發模式時)並使用它們的時間戳來確定哪些需要重新編譯?我正在考慮GNU Make基於時間戳進行選擇性編譯的方式。謝謝

回答

0

我會建議使用Make(其他其他構建系統,如CMake)進行開發和setup.py只用於最終的安裝/部署。我做了類似的Python + C++項目,它的工作方式非常棒。

+0

這看起來不錯,但是在使用Make編譯C++文件之後,我不需要運行「python setup.py install」來實際安裝編譯的庫和python到python路徑中嗎? 「python setup.py install」是否使用源文件夾中本地生成文件夾中的預編譯庫?如果可能的話,你能否指點我一個例子(可能是你的一個項目)?謝謝。 – Aravind

相關問題