1

我希望我的 make 目标依赖于执行文件。例如我有简单的makefile:

a.out: test.cpp
    gcc test.cpp

我想要这样的东西:

a.out: test.cpp, `which gcc`
    gcc test.cpp

这意味着更改您的 gcc(特别是更新)将导致 a.out 的重建(即使 test.cpp 没有更改)。

但它看起来像一个不合时宜的解决方案,因为您应该为该规则工具中使用的每条规则添加一个额外的先决条件。

这个问题还有其他解决方案吗?

4

1 回答 1

1

在 GNU makemakefile 中,您可以使用:

CC := $(shell which gcc)

a.out: test.cpp ${CC}
    ${CC} -o $@ test.cpp

请注意,只有在编译器可执行文件被修改时才会触发构建,而不仅仅是因为它与上次构建程序时不同。从历史上看,SUNmake有一个“.make.state”文件和一个.KEEP_STATE跟踪此类事情的目标。clearmake如果您选择这样做,IBM Rational ClearCase还可以跟踪此类问题。

于 2012-10-25T13:07:17.033 回答