我一直在研究一个包含大量文件的 Python 扩展模块。在一台机器上构建时,python setup.py build
会很高兴地检测到更改的文件,只构建那些文件,并将整个东西链接在一起,就像 make 一样。然而,在另一台机器上,对任何文件的一次更改都会触发所有源的重新编译。
只是要清楚。两台机器都检测到软件包何时是最新的并且不会做任何事情。只有当单个文件发生更改时,它们的行为才会出现分歧。
为什么第二台机器会这样做?
机器 1(对每个文件进行适当的依赖检查和构建。)
Python 2.6.4 (r264:75706, Feb 15 2010, 17:06:03)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
setuptools-0.6c11-py2.6
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.4 (Final)
Release: 5.4
Codename: Final
机器 2(当单个源文件更改时重建所有内容。)
Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
setuptools-0.6c11-py2.6
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04 LTS
Release: 10.04
Codename: lucid