首页 > 编程语言 >Makefile编程基础

Makefile编程基础

时间:2023-03-09 15:59:27浏览次数:42  
标签:编译 补充 Makefile 编程 基础 echo nihao 命令 world

一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令。

1.Makefile基础
简单实例:

1 all:
2     @echo "hello world."
3     echo "nihao world."

加@符和不加@符输出不同,加@只显示结果,不加@会把命令和结果都显示。

输出结果:

hello world.
echo "nihao world."
nihao world.

目标:依赖

Tab 命令

目标:一般是指要编译的目标,也可以是一个动作;
依赖:指执行当前目标所要依赖的先项,包括其它目标,某个具体文件或库等,一个目标可以有多个依赖;
命令:该目标下要执行的具体命令,可以没有,也可以有多条,多条时,每条命令一行;

make常用选项

make [-f file] [options] [target]

    # make默认在当前目录中寻找GNU Makefile,makefile的文件作为make的输入文件。
    -f 可以指定除上述文件名之外的文件作为输入文件;
    -v 显示版本号;
    -d Debug;
    -n 只输出命令,但并不执行,一般用来测试;
    -s 只执行命令,但不显示具体命令,此处可在命令中用@符抑制命令输出;
    -w 显示执行前、执行后的路径;
    -C dir 指定makefile所在的目录;

没有指定目标时,默认使用第一个目标;如果指定,则执行对应的命令。

1 all:test1
2     echo "hello world."
3 
4 test1:
5     echo "nihao world."

all依赖于test1,所以test1先执行,all后执行。

执行结果:

nihao world.
hello world.

2.GCC编译流程

[待补充]

3.变量

[待补充]

4.伪目标和模式匹配

[待补充]

5.运行流程

[待补充]

6.编译动态链接库

[待补充]

7.编译静态链接库

[待补充]

8.公共头文件

[待补充]

9.调用Shell命令

[待补充]

10.嵌套调用

[待补充]

11.条件判断

[待补充]

12.循环

[待补充]

13.自定义函数

[待补充]

14.make install的实现

[待补充]

标签:编译,补充,Makefile,编程,基础,echo,nihao,命令,world
From: https://www.cnblogs.com/phoebus-ma/p/17198757.html

相关文章

  • 实验1 Python开发环境使用和编程初体验
    实验任务1task1_1程序源码#task1_1print输出的几种用法#用法1:用于输出单个字符串或单个变量print('hey,u')#用法2:用于输出多个数据项,用逗号分隔print('hey','u......
  • 1 MySql基础介绍
    目录1mysql逻辑架构1.1连接管理与安全性1.2优化与执行2并发控制2.1锁粒度2.2表锁2.3行级锁3事务3.1数据库事务四特性3.2隔离级别3.3死锁3.4事务日志3.5MySql......
  • 实验1 Python开发环境使用和编程初体验
    print(x,y,z)print('x=%d,y=%d,z=%d'%(x,y,z))print('x={},y={},z={}'.format(x,y,z))print(f'x={x},y={y},z={z}')print(......
  • 一Spring框架基础--2设计模式
    一Spring框架基础--2设计模式1.3spring用到的设计模式1.3.1责任链模式有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象......
  • 一Spring框架基础--3动态代理
    一Spring框架基础--3动态代理1.4代理模式1.4.1Java代码执行流程1.4.1.1class文件Java编译器编译好Java文件后,产生.class文件在磁盘,该文件是二进制文件,内容只有jvm......
  • 实验1 Python开发环境使用和编程初体验
    实验目的:实验任务1:task1-11#print输出的几种用法23#用法1:用于输出单个字符串或单个变量45print('hey,u')678#用法2:用于输出多个数据项,用逗......
  • 实验1 Python开发环境使用和编程初体验
    实验任务1task1-1Python源码1print('hey,u')2print('hey','u')3x,y,z=1,2,34print(x,y,z)1x,y,z=1,2,32print('x=%d,y=%d,z=%d'%(x,y,z)......
  • 矢量基础
    1场论1.1数量场\(f(x,y,z,t)\)1.2等值面2矢量基本运算矢量三重积\(\displaystyle\vec{a}\times(\vec{b}\times\vec{c})=\vec{b}\cdot(\vec{a}\cdot\vec......
  • 实验1 Python开发环境使用和编程初体验
    task1_1:1.print('hey,u')print('hey','u')x,y,z=1,2,3print(x,y,z)print('x=%d,y=%d,z=%d'%(x,y,z))print('x={},y={},z={}'.format(x,y,z))print(f'x={x},y=......
  • Git 基础使用
    参考文档:(22条消息)cat.git/config查看远端服务器信息(git的配置信息:远端服务器连接信息)_longshenlmj的博客-CSDN博客****(22条消息)Git知识总结_lili要努力的博客-CSD......