linux下开发c++第二弹--helloworld与makefile

时间:2022-08-22 03:57:05

一:hello world

sudo vim hello.cpp

linux下开发c++第二弹--helloworld与makefile

输入  g++ -o hello hello.cpp  获得hello

输入  ./hello 运行,显示结果hello world! ,  ./表示在同一目录下。

 

二,makefile

1、基本的make

makefile编写据传闻应该是linux环境开发者必备技能,本人小白,暂时写一点儿练习时使用的,以后如果有其他改进另行添加。另外,网上密密麻麻的复制粘贴的“如果一个项目有3个头文件,8个c文件”的教程,虽然不知道原作者是谁,但是慢慢琢磨和学习,这个教程本身还是很不错的,依然是helloworld,虽然并不用这么麻烦,作为练习还是写了一个makefile

sudo vim makefile

linux下开发c++第二弹--helloworld与makefile

当前目录控制台输入: make 之后会在控制台打印出make文件中的命令行

多出来hello 和 hello.o两个文件

执行:./hello 结果 :hello world!

执行:make clean 结果 :删除.o扩展名的文件

由此我们看出,hello为最终结果,而.o都是一些中间代码,格式自上而下进行:

        目标名: 依赖文件

        (tab)命令输入

     这里需要强烈注意的是:命令前必须有一个tab而不是四格空格。因为根据规则可以知道,在执行make时,系统会认为tab之后的是一个可执行的命令行,所以make文件其余地方对其或者其他处理请不要用tab,同时vim很多人下载的网上大神配置好的vim中会有空格替代tab的设定,可以通过在个人目录的.vimrc.local(每个人的可能不一样的文件)中输入     set noexpandtab      解决这个问题。此外,有教程说makefile文件的冒号前后必须空格,可能根据不同的规范要求吧,并没有tab这样一旦不照做崩盘的情况出现。

2、命名为makefile是因为make会自动识别当前目录下的文件,命名为makefile,Makefile据说都可以。

如果命名为其他的文件,同时还要make的话输入命令行

make -f 文件名

如果需要执行make中的clean命令,输入命令行

make -f 文件名 clean

 

3,强大的省略功能(缩写简化)

     这一部分因为我还没有用到太复杂的功能,充其量也就是两个cpp一个h这样的文件组合进行测试,所以以下为假设:

     如果我们的main由很多中间代码合成,我们正常情况

linux下开发c++第二弹--helloworld与makefile

     如果这么书写那么一定会出很大问题,尤其是大项目的内容更多,改着改着没准眼一花就写错了各地方,然后各种崩盘。所以我们可以用声明变量的方法,将重复的而且过长的子串提取出来。看上去整洁了不少的样子,修改的时候问题也会简化

linux下开发c++第二弹--helloworld与makefile 

另外就是makefile的推导功能,这个还是比较喜欢的,因为小白经常gcc g++ -c -o什么的感觉乱糟糟,所以借鉴了之前的那篇经典教程,gnu是可以自动推导判断出你到底想要什么,如果目标是half.o那么make就会寻找到half.c或者cpp之类的作为依赖,这时候只需要填写half.o所需要的其他的内容,比如.h文件,如下图所示两种效果相同。表示本人暂时没接触到也并不喜欢如果多个.o文件依赖同一.h文件进行缩写的那种,因为缺乏了美感和层次感。

linux下开发c++第二弹--helloworld与makefile