想象一下,我有 2 个源文件,它们都包含一个头文件。交流:
#include "ab.h"
int a() {
return RETURN_VAL;
}
公元前:
#include "ab.h"
int b() {
return !RETURN_VAL;
}
ab.h:
#define RETURN_VAL (0)
我想要一个可以在一次调用 ac 和 bc 中编译的 makefile文件。
这是一个小例子,我需要一些可以扩展的东西。我试图解决这个问题,但我不知道如何解决。
这是一个使用 C 的示例,但我的实际用途是编译大型 HDL 项目。由于 HDL 编译器的调用开销很大,因此最好为多个文件调用一次该工具,而不是为每个文件单独调用该工具。
我尝试过的是:
a.c: ab.h ;
b.c: ab.h ;
ab.timestamp: a.c b.c
gcc -c $?
touch ab.timestamp
这行不通,相反,我需要这样的东西:
ab.timestamp: a.c b.c ab.h
gcc -c a.c b.c
touch ab.timestamp
这是我不想要的。我想要美元?指示我需要重新编译的正确文件。我知道我可以使用 $(if 和 $( 过滤器函数来解决这个问题,但我希望有更无缝的东西。
我正在使用 GNU Make。
谢谢, 纳楚姆