我有一个Makefile使用以下行:的Makefile行`测试-f`
$(CXX) $(CXXFLAGS) $(INCL) -c -o [email protected] `test -f '$<' || echo '$(SRCDIR)/'`$<
你能解释我这行做了什么?
注:Makefile文件就是从这里取:https://projects.coin-or.org/BuildTools/wiki/user-examples
该页面指定此:
通用编译规则(例如,.c.o)可能看起来有点复杂 。但是由此,Makefile也可以被在Cygwin下与MS编译器(例如cl)一起工作的人 使用,因为那些 编译器不理解UNIX类型的目录路径。在这样一个 的情况下,CYGPATH_W将被设置为“cygpath -w”, ,否则它只是“echo”。
我不打算使用MS编译器。
好吧,假设所有的源文件都位于Makefile所在的目录下,如果我理解的很好,我可以用'$(CXX)$(CXXFLAGS)$(INCL)-c -o $ @'$ <''。 – D1X 2014-11-01 15:14:26
还有一个问题:是否有必要? – D1X 2014-11-01 15:16:39
是的,你的两个问题都可以。反标告诉shell“执行这个命令,然后在这里插入结果(即命令中的stdout)。” – 2014-11-01 15:50:02