这里简单用Linux写第一个程序和用这个程序来帮我们理解make/Makefile
---
printf("%d\n",xxx);
简单的第一个小程序,首先我们要了解\r和\n的区别:
\n:直接向下移动一行,并不移动左右
\r:回到当前行的最左边
假设我们要打印9-1
用\n,就会出现:
9
8
7
6
5
4
3
2
1
0
但是如果用\r,就会出现在一个位置一直变化数字,从9变到1,这个不太好演示,但之后可以直接看效果。
另外要说的一个就是缓冲区的概念
假设我们要打印一个变量,它应该是这样的
printf("%d\n",xxx)
这里的\n就起到了一个刷新缓冲区的效果,如果没有这个\n,那这个变量会先放到缓冲区,如果在这个过程中有什么sleep之类的暂停,那这个变量就不会被拿出来,直到暂停结束。
假设我们用了sleep(),但是又想点让屏幕显示
可以用fflush(stdout),直接刷新
----------
这里就正式开始写
首先我们要用到上面提到的函数:
usleep(以微秒为单位暂停一段时间)
fflush(刷新流中的信息)
编译一下;
运行:
可以看到效果不错,但是刚刚我们是用gcc编译的,而这篇文章标题的另一部分是makefile,这个makefile又是什么东西?
--------
Makefile
会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
makefile的效果就是,当一个工程的文件很多,有的文件要先编译,有的要后编译,有的要重新编译,而这些如果要手动,是相当麻烦的事makefile的好处就是,只要写好,它只需要一个make即可完成编译
就拿我们刚刚写的代码,这里写一个示例:
用makefile之前,我们要先建立一个makefile的文件
随后这么写,这里说一下格式,第一个test是生成的文件名,一个冒号后面跟着的是这个生成的文件需要什么来生成,然后回车,用tab开头,写编译的方式 ,随后我们保存退出
可以看到外面现在是有一个test的,这个时候我们输入make+回车:
它会提示说test已经存在,不需要生成
这个时候我们可以直接删除这个test吗,还可以用.PHONY来让它生成,这里先讲第一个,直接删除test
再进行make
可以看到它自动调用了我们写的执行过程,然后生成了test文件
这里说回第二种方式:.PHONY
这个的意思就是,总是被执行的,可以这么理解,每个文件都有生成时间,这里如果你没有进行修改,那make是不会帮你生成新的,但是如果加上了.PHONY,make就不会管有没有修改更新,它会直接生成新的文件
一般,我们还会写一个析构:
如果调用的话,就这么调用:
然后我们ls看一下文件
test已经不在了
这里解释一下,make的原理:
首先它会找名为makefile的文件,然后根据这个文件的内容来生成文件
如果这个生成的文件在目录里面找不到,或者是更新时间比之前生成的新,它会生成一个新的,否则不会生成
--------
以上就是本篇文章的全部内容,希望对你有所帮助