$$@在makefile中是什么意思?
我正在将一个makefile从AIX移植到Linux—这一行有问题:$$@在makefile中是什么意思?,makefile,Makefile,我正在将一个makefile从AIX移植到Linux—这一行有问题: program.o : header1.h header2.h program : $$@.o lib1.a lib2.a lib3.a 错误是: make: *** No rule to make target `$@.o', needed by `program'. Stop. 是否有人识别此$$@变量?我在任何地方都找不到它的任何参考资料 谢谢 此规则必须位于标记为 .SECONDEXPANSION: 第一个$在
program.o : header1.h header2.h
program : $$@.o lib1.a lib2.a lib3.a
错误是:
make: *** No rule to make target `$@.o', needed by `program'. Stop.
是否有人识别此$$@变量?我在任何地方都找不到它的任何参考资料
谢谢 此规则必须位于标记为
.SECONDEXPANSION:
第一个$
在第一个过程中展开,生成$@.o
,然后第二个过程像往常一样生成program.o
这是一个GNU制造特性。您应该确保GNU make(而不是其他)正在目标上使用,并且它是最新的。你可以用它来做这个
make --version
版本4可用,但3.8x应该可以
相关文档为。此规则必须位于标记为
.SECONDEXPANSION:
第一个$
在第一个过程中展开,生成$@.o
,然后第二个过程像往常一样生成program.o
这是一个GNU制造特性。您应该确保GNU make(而不是其他)正在目标上使用,并且它是最新的。你可以用它来做这个
make --version
版本4可用,但3.8x应该可以
相关文档是。如果make支持$$@,则$$$@将仅计算为在此makefile的这一行上编程 $$@可以与依赖项(而不是命令)行上的目标名称相同。从这个意义上讲,您拥有的makefile是正确的($$@位于它应该位于的行上)。$$@并非所有make程序都支持 根据我使用的“使用Make管理项目”一书,$$@的意思与目标名称$@相同,但$$@和$@在makefile中的不同位置使用: $@只能在命令行上使用 目标:依赖1依赖2 命令1>>$@ $$@只能在依赖项行上使用,如中所示: docmk:$$@.c 评估结果为:
docmk:docmk.c如果make支持$$@,则$$@将计算为在该makefile的这一行上编程 $$@可以与依赖项(而不是命令)行上的目标名称相同。从这个意义上讲,您拥有的makefile是正确的($$@位于它应该位于的行上)。$$@并非所有make程序都支持 根据我使用的“使用Make管理项目”一书,$$@的意思与目标名称$@相同,但$$@和$@在makefile中的不同位置使用: $@只能在命令行上使用 目标:依赖1依赖2 命令1>>$@ $$@只能在依赖项行上使用,如中所示: docmk:$$@.c 评估结果为:
docmk:docmk.c我找到了它的文档。我以前从未使用过这个功能,所以我不能告诉你更多。太棒了,谢谢-我会阅读的。是的。这要么是H2CO3所指出的错误,要么是试图使用WumpusQ.Wumbley所指出的辅助扩展。我刚刚注意到,您的做法与我的想法相反——从AIX到Linux。这个
$$@
似乎是一个GNU扩展,所以我希望它主要用于Linux,所有的移植问题都是相反的direction@H2CO3:作为$@
,它没有意义,因为该变量在prereq列表中不可用。(我的意思是,作者可能有意$@
,输入了一个错误,但这是假设了很多。)二次扩展似乎是最有可能的解释。我找到了相关文档。我以前从未使用过这个功能,所以我不能告诉你更多。太棒了,谢谢-我会阅读的。是的。这要么是H2CO3所指出的错误,要么是试图使用WumpusQ.Wumbley所指出的辅助扩展。我刚刚注意到,您的做法与我的想法相反——从AIX到Linux。这个$$@
似乎是一个GNU扩展,所以我希望它主要用于Linux,所有的移植问题都是相反的direction@H2CO3:作为$@
,它没有意义,因为该变量在prereq列表中不可用。(我的意思是,作者可能有意$@,打字错误,但这是假设了很多。)二次扩展似乎是最可能的解释。