这是什么样的Makefile变量赋值?

时间:2013-05-09 19:35:00

标签: variables makefile declaration

我多年来一直使用简单的makefile,但是最近才被分配了一个学习大型,复杂的Autotools生成的makefile的来龙去脉的任务,这些makefile用于我雇主购买的代码库。在这些中,我遇到了如下变量声明:

QOBJECT_MOCSRCS = $(QOBJECT_HEADER:%.h=.gen/moc_%.cpp) \
                  $(QOBJECT_SRCS:%.cpp=.gen/moc_%.cpp)

QOBJECT_DEPS = $(QOBJECT_MOCSRCS:%.cpp=.deps/%.Po)

我从上下文中得出的最好的猜测是,这些设置由构建过程提供的文件名列表,例如,QOBJECT_MOCSRCS应该最终作为(a).h文件,(b).cpp文件的列表,基于在构建期间生成的一组中间.cpp文件的%stem名称,在临时目录./gen中。这用于存储moc _%。cpp文件,这些文件是使用Qt的moc工具构建Qt文件而输出的......是什么让我发疯,是因为我无法在任何中找到任何内容make 我得到的文档(主要是GNU make手册)告诉我这种声明的样式是什么,所以我可以跟踪它并掌握语法。 $()的内容看起来有点像规则,而GNU make手册中最接近的等价似乎是指定特定于目标的变量值的规则,但我不知道这是否接近正确的读数。有谁能指出我适当的研究参考?

1 个答案:

答案 0 :(得分:1)