阅读makefile。符号的含义

时间:2015-06-05 05:36:05

标签: linux makefile

我正在努力学习如何阅读makefile并遇到过这个问题。我的问题是指的是目标%.c的规则。在第一个命令。在哪里说

 %.c: %.psvn  psvn2c_core.c psvn2c_state_map.c psvn2c_abstraction.c
    ../psvn2c  $(PSVNOPT) --name=$(*F)  < $< > $@

$(*F) < $ < > $@是什么意思?我在下面发布了整个makefile。

   CC = gcc
        CXX = g++
        OPT = -g -Wall -O3 -Wno-unused-function -Wno-unused-variable -std=c++11
        PSVNOPT = --no_state_map --no_backwards_moves --history_len=0 --abstraction --state_map 

psvn2c_core.c:
    cp ../psvn2c_core.c ./psvn2c_core.c

psvn2c_state_map.c:
    cp ../psvn2c_state_map.c ./psvn2c_state_map.c

psvn2c_abstraction.c:
    cp ../psvn2c_abstraction.c ./psvn2c_abstraction.c

%.c: %.psvn  psvn2c_core.c psvn2c_state_map.c psvn2c_abstraction.c
    ../psvn2c  $(PSVNOPT) --name=$(*F)  < $< > $@
    rm -f ./psvn2c_core.c ./psvn2c_state_map.c ./psvn2c_abstraction.c

我想理解这是学习如何使用eclipes或visual studio运行cdb调试器(如gdb)的第一步。

2 个答案:

答案 0 :(得分:1)

在makefile中以$开头的任何内容都是变量引用(或者,在GNU make中,是一个内置函数),除非它与另一个$一起转义(即,是$$)。变量的名称可以是单个字符,如$@$A等,也可以是括在括号或括号中的一个或多个字符,如$(@),{ {1}}(与最后一个相同),${A}$(FOO)等。

GNU make manual有很多关于所有预定义和特殊变量的信息。这些奇怪的变量特别是automatic variables

如果它不是变量,而且它是配方的一部分,那么它会被发送到shell,所以你应该查看shell文档来理解它。

答案 1 :(得分:0)

说&lt;是否正确?表示从中输入和输入$&lt;是依赖项列表中的第一个文件。和&gt;表示管道输出到,而$ @是输出文件,即。 :符号左侧的文件?