Python C++扩展:仅编译修改后的源文件
Python C++ extension: compile only modified source files
我正在开发一个包含C++扩展的python包。当我使用 setup.py 脚本或使用 pip 安装包时,C++源文件都被编译并链接以获得单个 .so 库,然后可以将其导入到 Python 源代码中。在开发过程中,我需要对源代码进行多次更改(测试、调试等)。我发现重新安装软件包涉及重建所有C++源文件,即使只更改了一个文件的一小部分。显然,这占用了相当多的时间。
我知道开发模式(python setup.py develop或pip install -e)放置指向源文件的链接,以便在重新导入模块时立即看到所做的更改。但是,这仅适用于.py源文件,而不适用于C++扩展名,每次更改后都必须重新编译该扩展名。
有没有办法让 setup.py 查看构建目录中的 .o 文件(在开发模式下)并使用它们的时间戳来确定哪些文件需要重新编译?我正在考虑GNU Make基于时间戳执行选择性编译的方式。谢谢
我建议使用Make(其他其他构建系统,如CMake)进行开发,setup.py 仅用于最终安装/部署。我做过类似的Python + C++项目,它以这种方式工作得很好。
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 独立读取-修改-写入顺序
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- 修改函数中的指针(将另一个指针作为参数传递)
- 为什么我可以通过引用修改常量返回
- 为测试目标创建具有不同源文件夹的文件
- 对于结构,表达式必须是可修改的ivalue
- QML:修改在不同QML文件(而非main.QML)中定义的子对象的属性
- 为什么不能修改对象中的值?另外,我如何改进此链表?
- 修改创建帐户程序
- 将图像添加到资源文件夹UWP C++
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 如何从子成员函数修改父公共成员变量
- 修改 VS Code 中的默认C++代码段
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 如何使用递归打印修改后的星号三角形图案
- 已修改的LinkedList未在文本文件本身中更新
- C++RapidXml-使用first_node()遍历以修改XML文件中节点的值
- 修改OBJ文件链接到的源文件会破坏应用程序吗
- Python C++扩展:仅编译修改后的源文件