Python C ++扩展:仅编译修改后的源文件

时间:2013-10-15 23:54:05

标签: c++ python setup.py

我正在开发一个包含C ++扩展的python包。当我使用setup.py脚本或使用pip安装软件包时,C ++源文件都被编译和链接以获得单个.so库,然后可以在Python源代码中导入。在开发过程中,我需要对源代码进行多次更改(测试,调试等)。我发现重新安装软件包涉及重建所有C ++源文件,即使只更改了一个文件的一小部分。显然,这需要相当多的时间。

我知道开发模式(python setup.py develop或pip install -e)放置了源文件的链接,以便在重新导入模块时立即看到所做的更改。但是,这仅适用于.py源文件,而不适用于C ++扩展,必须在每次更改后重新编译。

有没有办法让setup.py查看构建目录中的.o文件(在开发模式下)并使用它们的时间戳来确定哪些需要重新编译?我正在考虑GNU Make基于时间戳执行选择性编译的方式。谢谢

1 个答案:

答案 0 :(得分:1)

我建议使用Make(其他其他构建系统,如CMake)进行开发,并将setup.py仅用于最终安装/部署。我已经完成了类似的Python + C ++项目,它的工作方式很棒。