linux - 阅读生成文件。符号的含义

标签 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 运行 c++ 调试器(例如 gdb)的第一步。

最佳答案

在 makefile 中以 $ 开头的任何内容都是变量引用(或者,在 GNU make 中,是内置函数),除非它被另一个 $ 转义(即,是 $$)。变量名可以是单个字符,如$@$A等,也可以是一个或多个用圆括号或大括号括起来的字符,像$(@), ${A} (和上一个一样), $(FOO), ${ FOO}

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

如果它不是变量,而是配方的一部分,那么它会被发送到 shell,因此您应该查看 shell 文档以了解它。

关于linux - 阅读生成文件。符号的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30659029/

相关文章:

linux - mv 命令创建目录

linux - htop 显示 Eclipse 的多个进程

makefile - 包含路径中具有相同名称的两个 header

linux - 从源代码树运行程序

将wcecompat编译为dll

Linux:使用 grep 在文件中查找单词,然后打印文件中是否包含该单词

linux - "curl"无法连接到 ftp : "500 ?"

arrays - sh + 如何在 sh 中使用数组来打印数组中的所有值

php - 未知类型名称 'zend_string'

makefile - 如何比较Makefile中的两个字符串变量