Linux自动化构建工具Make/Makefile

make是一个命令 makefile是一个文件

touch 创建并用vim打开makefile

写入依赖对象和依赖方法

mycode是目标文件

第二行数依赖方法 以tab键开头

make

makefile原理

makefile中写的是依赖关系和依赖方法

clean英语清理文件 后不用加源文件。.PHONY定义clean是伪目标。

make只能make一次

被修饰为伪目标的clean总是被执行。

mycode不设为伪目标时,系统怎么知道它已经被编译了?

通过mycode.c的Modify时间是否比mycode的Modify时间早。

.PHONY设置伪目标可以多次执行的原理就是忽略时间先后实现的。

Modify是内容修改时间,Change是属性修改时间。

更改属性。只更改属性时间

更改内容,属性也更改。因为大小改变。

access时间随机改变

touch mycode.c能更改mycode.c的更改时间。

make默认只执行第一个目标文件。

Makefile推导规则

.c预处理变.i .i编译变成.s .s经过汇编变成.o .o经过链接形成可执行。

依赖关系列表。

先执行最后一条语句。

进度条程序

预备知识:

缓冲区:

会先等2秒再显示

原因是数据先存储在了缓冲区。

可以使用fflush先把内容显示出来。

\n是行缓冲,会直接显示。

回车换行

\r \n

使用\r在同一地方打印,使用fflush解决\r缓冲区不刷新问题。

%2d防止到9时显示90.

没有makefile ls>自动创建

makefile中不用加process.h process.h在同一个文件中 头文件默认在当前路径和库路径中搜索。

process.h

cpp 复制代码
#pragma once                                                                                                                                                        
  2 #include<stdio.h>
  3 #include<string.h>
  4 #include<unistd.h>
  5  #define NUM 101
  6 #define STYLE '#'
  7 void ProcessOn();

process.c

cpp 复制代码
1 #include"process.h"
  2 
  3 void ProcessOn()
  4 {
  5  
  6   int cnt=0;
  7   char bar[NUM];
  8   memset(bar,'\0',sizeof(bar));
  9   const char* label="|/-\\";
 10   while(cnt<=100)
 11   {
 12       printf("[%-100s][%d%%][%c]\r",bar,cnt,label[cnt%4]);                                                                                                          
 13       fflush(stdout);
 14       bar[cnt++]='#';
 15       usleep(50000);                                                                                                                                      
 16   }                                                                                  
 17   printf("\n");                                      
 18                                       
 19 } 

快速更改风格:

相关推荐
头发还没掉光光10 分钟前
Linux网络初始及网络通信基本原理
linux·运维·开发语言·网络·c++
爱和冰阔落13 分钟前
【Linux工具链】从跨平台适配到一键部署:yum多架构支持+Vim远程编辑+gcc交叉编译,解决多场景开发效率瓶颈
linux·运维·vim
zzzsde26 分钟前
【Linux】权限(2):文件权限的深入理解&&粘滞位
linux·运维·服务器
火龙谷28 分钟前
dy自动化遇到的滑动问题
运维·自动化
序属秋秋秋1 小时前
《Linux系统编程之开发工具》【实战:倒计时 + 进度条】
linux·运维·服务器·c语言·c++·ubuntu·系统编程
nanixiaowai1 小时前
Jmeter+ant+Jenkins 接口自动化框架-让jmeter脚本自己跑起来
jmeter·自动化·jenkins
IT小哥哥呀3 小时前
Nginx高可用配置实战:负载均衡 + 健康检查 + 动态扩展
运维·nginx·负载均衡·devops·日志分析·openresty·动态扩展
刘某的Cloud3 小时前
ceph osd down排查
linux·运维·ceph·系统·osd
喜欢你,还有大家7 小时前
Docker-仓库-镜像制作
运维·docker·容器
LabVIEW开发8 小时前
LabVIEW是否适合商业化软件开发
自动化·labview