c语言学习笔记二十一
来源:互联网 发布:大学生java培训学校 编辑:程序博客网 时间:2024/05/17 09:07
makefile中关于变量的语法规则
示例代码如下:
foo = $(bar)
bar = Huh?
all:
@echo $(foo)
执行make后输出: Huh?
优点: 可以把变量的值推迟到后面定义
示例代码:
main.o:main.c
$(CC) $(CFAGS) $(CPPFLAGS) -C $<
CC=gcc
#编译选项
CFAGS= -O -g
#预处理选项
CPPFLAGS= -Iinclude
编译展开后为:
gcc -O -g -Iinclude -c main.c
示例代码:
x := foo
#$(x)会立即展开
y := $(x) bar
#定义一个变量的值是空格
nullstring :=
space := $(nullstring)
x := fbb
#$(x)不会立即展开
# y如果没有定义过,就按=处理,如果已经定义就不作任何操作
y ?= $(x) bar
objects = main.o
#可以给变量追加值
#如果objects = main.o用=定义,不会立即展开
#objects := main.o用:=定义,会立即展开
objects += $(foo)
foo = foo.o bar.o
all:
@echo "-$(y)-"
@echo "--$(space)--"
@echo "---$(y)---"
@echo "----$(objects)----"
输出结果为:
-foo bar-
-- --
----foo bar---
----main.o foo.o bar.o----
常用的特殊变量有:
$@,表示规则中的目标。
$<,表示规则中的第一个条件。
$?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。
$^,表示规则中的所有条件,组成一个列表,以空格分隔。
示例代码:
test34:test34.o test33.o test31.o
(这里是个tab) gcc test34.o test33.o test31.o -o test34
可以改写为:
test34:test34.o test33.o test31.o
(这里是个tab) gcc $^ -o $@
示例代码如下:
libsome.a: foo.o bar.o lose.o wino
#只有更新过的目标文件才会重新打包
arr r libsome.a $?
示例代码如下:
foo = $(bar)
bar = Huh?
all:
@echo $(foo)
执行make后输出: Huh?
优点: 可以把变量的值推迟到后面定义
示例代码:
main.o:main.c
$(CC) $(CFAGS) $(CPPFLAGS) -C $<
CC=gcc
#编译选项
CFAGS= -O -g
#预处理选项
CPPFLAGS= -Iinclude
编译展开后为:
gcc -O -g -Iinclude -c main.c
示例代码:
x := foo
#$(x)会立即展开
y := $(x) bar
#定义一个变量的值是空格
nullstring :=
space := $(nullstring)
x := fbb
#$(x)不会立即展开
# y如果没有定义过,就按=处理,如果已经定义就不作任何操作
y ?= $(x) bar
objects = main.o
#可以给变量追加值
#如果objects = main.o用=定义,不会立即展开
#objects := main.o用:=定义,会立即展开
objects += $(foo)
foo = foo.o bar.o
all:
@echo "-$(y)-"
@echo "--$(space)--"
@echo "---$(y)---"
@echo "----$(objects)----"
输出结果为:
-foo bar-
-- --
----foo bar---
----main.o foo.o bar.o----
常用的特殊变量有:
$@,表示规则中的目标。
$<,表示规则中的第一个条件。
$?,表示规则中所有比目标新的条件,组成一个列表,以空格分隔。
$^,表示规则中的所有条件,组成一个列表,以空格分隔。
示例代码:
test34:test34.o test33.o test31.o
(这里是个tab) gcc test34.o test33.o test31.o -o test34
可以改写为:
test34:test34.o test33.o test31.o
(这里是个tab) gcc $^ -o $@
示例代码如下:
libsome.a: foo.o bar.o lose.o wino
#只有更新过的目标文件才会重新打包
arr r libsome.a $?
- c语言学习笔记二十一
- c语言学习笔记十一
- C语言程序学习(十一)笔记
- c语言学习笔记二
- C语言学习笔记<二 >
- C语言学习笔记二
- 【黑马程序员】C语言学习笔记之指针(十一)
- C语言学习笔记(十一) -内存管理 Storage
- 黑马程序员-IOS学习笔记(十一)C语言总结
- Object-C 学习笔记(二十一)---延展Extendtion
- 【C++】学习笔记二十一——if语句
- [C语言学习]作业十一
- Allegro学习笔记二十一
- 学习笔记(二十一)
- 《C语言宝典》学习笔记(二):概述
- C语言学习笔记(二)
- 嵌入式学习笔记-C语言(二)
- c语言学习笔记二十
- 0/1背包问题
- 理解递归
- 简单的debugview
- const与重载函数
- libcurl发送邮件C++类
- c语言学习笔记二十一
- 基于Flex-config.xml的命令行编译(转)
- linux下samba搭建和网络驱动器
- R cannot be resolved to a variable
- 我想做一个程序猿
- UC面试总结
- 创业家是新叛逆
- PID Filter - Demultiplexer
- 柔性数组