在makefile中指定目标而不显示在$^

在makefile中指定目标而不显示在$^,makefile,Makefile,我有一个程序,链接到一个图书馆,该图书馆也在开发过程中。我希望在库更改时重新链接我的程序(因此在我的先决条件列表中有.a文件,但我还希望能够使用$^自动变量(或类似的变量)列出链接器调用中的所有其他目标。我还可以将makefile本身列为某些目标的依赖项,以确保在更改makefile时重新编译它们 是否有某种方法可以将特定文件标记为依赖项,而不让它显示在自动变量(如$^)中?我不知道有什么方法可以修改$^本身,但GNUMake有一些好方法,例如过滤掉: foo: bar baz quartz.a

我有一个程序,链接到一个图书馆,该图书馆也在开发过程中。我希望在库更改时重新链接我的程序(因此在我的先决条件列表中有
.a
文件,但我还希望能够使用
$^
自动变量(或类似的变量)列出链接器调用中的所有其他目标。我还可以将makefile本身列为某些目标的依赖项,以确保在更改makefile时重新编译它们


是否有某种方法可以将特定文件标记为依赖项,而不让它显示在自动变量(如
$^
)中?

我不知道有什么方法可以修改
$^
本身,但GNUMake有一些好方法,例如
过滤掉

foo: bar baz quartz.a Makefile
    @echo I want $(filter-out %.a Makefile, $^), not $(filter %.a Makefile, $^)

我不知道有什么方法可以修改
$^
本身,但是GNUMake有一些好的方法,比如
过滤掉

foo: bar baz quartz.a Makefile
    @echo I want $(filter-out %.a Makefile, $^), not $(filter %.a Makefile, $^)

我不这么认为,但是
$(过滤掉%.a,$^)
不够好吗?@Beta:我不知道
过滤掉
。如果你把它写下来作为答案,我会接受的。我不这么认为,但不是
$(过滤掉%.a,$^)
足够好吗?@Beta:我不知道
过滤掉
。如果你写下来作为答案,我会接受的。