6

我正在开发一个包含 C++ 扩展的 python 包。当我使用 setup.py 脚本或使用 pip 安装包时,所有 C++ 源文件都被编译和链接以获得单个 .so 库,然后可以在 Python 源代码中导入该库。在开发过程中,我需要对源代码进行多次更改(测试、调试等)。我发现重新安装软件包涉及重建所有 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 回答