makefile

  • 通配符:
    1. *:表示任意一个或多个字符
    2. ?:表示任意一个字符
    3. […]: ex. [abcd] 表示a,b,c,d中任意一个字符, [^abcd] 表示除a,b,c,d以外的字符, [0-9]表示 0~9中任意一个数字
    4. ~ : 表示用户的home目录
  • 常见的自动变量:
自动变量 含义
$< 第一个依赖目标. 如果依赖目标是多个, 逐个表示依赖目标
$^ 所有不重复的依赖文件,以空格分开
[email protected] 目标集合
$? 比目标新的依赖目标的集合
$% 当目标是静态库文件时, 表示其中的成员名,如果不是静态库则为空值
  • 基本语法:
    target : prerequisites
    (table) command
    PS:command前面一定要以制表符table开头
  • 变量的定义与使用:
    1. 格式(举例):he=hello.h 则以后所有的hello.h都可以用he来代替,有点像C里面的宏
    2. 使用:在语句中碰到hello.h时,用 $(he) 来代替即可
  • 命令前缀:
    1. 不用前缀 : 输出执行的命令以及命令执行的结果, 出错的话停止执行
    2. @ : 只输出命令执行的结果, 出错的话停止执行
    3. - : 命令执行有错的话, 忽略错误, 继续执行
  • 示例:
# makefile
lib=libmyfile.so				//这里用lib变量代替了libmyfile.so
hello:$(lib) main.c
	@g++ main.c -o hello -L. -lmyfile
hello.o:hello.c
	@g++ -c hello.c
libmyfile.so:hello.c hello.h hello.c
	@g++ hello.c -fPIC -shared -o $(lib)
clean:
	@rm -rf *.o libmyfile.so hello
	@echo "clean complete"

接下来是运行前后的结果:makefile

相关文章:

  • 2021-10-12
猜你喜欢
  • 2022-01-14
相关资源
相似解决方案