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

Python C++;扩展名:仅编译修改过的源文件 我正在开发一个包含C++扩展的Python包。当我使用StupU.Py脚本或使用PIP安装包时,C++源文件都被编译和链接以获得一个.so库,然后可以在Python源代码中导入。在开发过程中,我需要对源代码进行多次更改(测试、调试等)。我发现重新安装包需要重建所有的C++源文件,即使只有一小部分文件被更改。显然,这需要相当多的时间,c++,python,setup.py,C++,Python,Setup.py,我知道开发模式(python setup.py develope或pip install-e)会放置到源文件的链接,以便在重新导入模块时立即看到所做的更改。但是,这只适用于.pY源文件,而不适用于C++扩展,在每次更改之后都必须重新编译。p> 有没有办法让setup.py查看build目录中的.o文件(在开发模式下),并使用它们的时间戳来确定哪些文件需要重新编译?我正在考虑GNU Make基于时间戳执行选择性编译的方式。谢谢我建议使用Make(其他构建系统,如CMake)进行开发,setup.p

我知道开发模式(python setup.py develope或pip install-e)会放置到源文件的链接,以便在重新导入模块时立即看到所做的更改。但是,这只适用于.pY源文件,而不适用于C++扩展,在每次更改之后都必须重新编译。p>
有没有办法让setup.py查看build目录中的.o文件(在开发模式下),并使用它们的时间戳来确定哪些文件需要重新编译?我正在考虑GNU Make基于时间戳执行选择性编译的方式。谢谢

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

看起来像个很棒的想法,但是在使用make编译C++文件之后,我不必运行“Python StupU.Py安装”来实际安装编译的库和Python到Python路径吗?“python setup.py install”是否使用源文件夹中本地生成文件夹中的预编译库?如果可能的话,你能给我举个例子吗(也许是你的一个项目)?谢谢。这是一种变通方法,它增加了项目设置的复杂性,并且不是多平台的。如果有
setup.py
解决方案就太好了。复制以查看建议的解决方案:使用
ccache
clcache