首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Makefile语法

Makefile语法
EN

Stack Overflow用户
提问于 2013-07-16 14:54:26
回答 1查看 319关注 0票数 0

我正在学习有关makefile的知识,对一些语法和后缀的工作原理感到有点困惑。

代码语言:javascript
运行
复制
CPP = g++
OFLAG = -o
.SUFFIXES : .o .cpp .c
.cpp.o : 
    $(CPP) $(CPPFLAGS) -c $<
.c.o :
    $(CPP) $(CPPFLAGS) -c $<

all: \
    Return \
        Declare \
    Ifthen \    
    Guess \
    Guess2 \

Return: Return.o
    $(CPP) $(OFLAG)Return Return.o

Deckare: Declare.o
    $(CPP) $(OFLAG)Declare Declare.o

# follow same format for other executables

Return.o: Return.cpp
Declare.o: Declare.cpp

# follow same format for other executables

".SUFFIXES:.o .cpp .c“这一行到底是做什么的?

我不太明白$<是什么意思。

CPPFLAGS从何而来?(它是专门用于make的特殊语法吗?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-16 15:03:28

.SUFFIXES为后缀规则定义了一组后缀。因此,在此示例中,您可以定义涉及后缀.o .cpp.c的后缀规则。如果要定义规则.x.o,因为.x不在.SUFFIXES列表中,所以它不是后缀规则--相反,它将是构建文件.x.o的规则

$<$(<)的缩写,它扩展到当前规则中目标的第一个依赖项。

$(CPPFLAGS)是一个make变量引用。因为您没有在这个makefile中设置它,所以它将展开为一个空字符串。除了约定之外,名称CPPFLAGS没有什么特别之处--它通常是您希望传递给c或c++编译器调用的一组C预处理器标志,这里就是这样使用它的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17669902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档