通过Scons控制distutils

4 投票
2 回答
812 浏览
提问于 2025-04-15 19:49

我有一个用C++写的库,使用Scons来构建,最后这个库会被链接到一个Python扩展里。

一旦我用scons构建好了这个库,我就写了一个标准的setup.py脚本,用来构建和安装这个扩展。

我主要的问题是,setup.py并不能识别库是否被重新构建过,它只会在扩展的代码发生变化时才会注意到。所以每次我重新构建库的时候,都得先“清理”一下扩展,然后再重新构建。此外,如果我改变了目录结构,我希望只需要编辑Scons的文件就可以了。最后,直接调用scons会更方便,而不是每次都要先调用scons再调用setup.py。

有没有人知道怎么把distutils集成到Scons里,这样就能利用Scons对哪些文件需要重新构建的了解呢?

2 个回答

0

我已经成功创建了一个SConstruct文件,用来编译用Pyrex写的Python扩展。主要的思路是从distutils获取合适的C编译器标志,然后设置你的环境。

可以查看scons wiki上的这些页面:

1

你可以通过SCons来执行任何命令行操作。想了解更多,可以查看编写你自己的构建器。然后,你可以通过编写一个扫描器来检测特定文件格式的任何变化。

撰写回答