makefile是什么
Makefile就像是一个shell脚本,可以执行操作系统的命令。
基本使用规则
下面简单说明了如何编写完成一个简单的makefile脚本。
基本编写规则:
目标:[依赖]
执行指令 ...
main.o: main.c
gcc -c main.c
注意执行指令前面是有输入一次tab键的。[依赖]为可选内容。
定义变量
Variable = this is variable
=为赋值符号,把右边的值赋给左边的变量名。右边的值可以是一段无意义字符串,也可以是shell命令。
使用变量
$(variable)
$为取值符号,把该变量名中的内容取出使用,不仅可以取变量中的内容,如果填入shell命令,还可以取出执行命令后的内容。
注释
在语句前加上#,该语句就会被注释掉。
工程代码的makefile
编译器(Compile Compiler)
CC = gcc
编译选项
CFLAGS = -g -Wall -std=gnu99
设置编译的一些额外操作,如-g产生调试信息,-Wall显示所有编译报警,-std=gnu99设置编译标准为gnu99
目录——路径(未赋值的需要自定义路径)
CUR_DIR(当前目录)= $(shell pwd)
SRC_DIR(源文件路径)
OBJ_DIR(目标文件路径)
BIN_DIR(可执行文件路径)
文件
SRCS = $(SRC_DIR)/xxx.c
OBJS = $(OBJ_DIR)/xxx.o
BINS = $(BIN_DIR)/xxx
以下为对一个简单的示例:(只编译一个源文件)
EXCU = test
CC = gcc
CFLAGS = -g -Wall -std=gnu99
CUR_DIR = $(shell pwd)
SRC_DIR = $(CUR_DIR)/src
OBJ_DIR = $(CUR_DIR)/obj
BIN_DIR = $(CUR_DIR)/bin
SRCS = $(SRC_DIR)/test.c
OBJS = $(OBJ_DIR)/test.o
BINS = $(BIN_DIR)/$(EXCU)
$(EXCU):$(OBJS)
$(CC) -o $(BINS) $(OBJS)
$(OBJS):
$(CC) $(CFLAGS) -c $(SRCS) -o $(OBJS)
基本的介绍就到这了,因为目前还没做过工程项目,所以头文件和库也不知道怎么安排,在介绍和使用时都先省略了,以后深入学习有经验后再修改和补充内容。