Linux下编译运行多个C++文件

之前一直使用集成开发环境,如VS、CLion等(CLion比较人性化,最爱它的调试功能,可以在程序中看到当前的变量值,推荐)。但是既然走C++这条路,就要了解Linux下的C++编程,所以学习了一下。

在面临多个文件需要同时编译运行的情况,就需要借助makefile了。

在网上看了很多博客,看了半天,终于,终于成功了!但是有好多只是列举了一些参数功能,有些讨论的过于高深,不适合我这种刚入门的小白,所以这里记录一下,方便后面自己忘记了查看,也希望帮助和我一样的小白,至少先尝试编译运行成功。至于其他的知识,后面再了解。

  1. 准备好要编译运行的文件,我这里有一个类模板文件array.hpp和一个main.cpp,还有创建的一个makefile文档(这里说一下,刚开始我以为这个makefile是什么软件自动生成的,以为很高大上,其实就是自己新建的一个文件,)
    Alt
    关于makefile文件的创建可以在工程目录文件夹下,执行这条命令:(gedit是文档编辑的工具,其实换成vim也可以)
gedit makefile&  
  1. 编辑makefile文件
mm:main.o
	g++ main.o -o mm
main.o:main.cpp 
	g++ -c main.cpp -o main.o
clean:
	rm *.o

1)第一行的mm,当它是一个标志,可以随便定义;这里只输出了main.o,因为array.hpp作为一个头文件已经包含进了main.cpp中,所以不需要输出array.o。但是如果你的工程文件中还有其他cpp文件,就需要输出.o文件。
2)第二行,注意g++前面是一个Tab键! 这里的mm,表示最后输出的运行文件叫mm。
3)第三行,就是定义main.o的来源,这个和单个文件编译时语法相同;注意,若有多个cpp文件,需要继续添加类似的语句。
4)最后,是清除操作的一些规则,这里表示清除所有以.o为后缀的文件,也就是在这里你可以设定需要清除的中间文件。

  1. 执行命令:
make -f makefile

然后就可以看到工程文件夹中多出了一些以.o为后缀的文件,这些就是我们之前定义输出的文件;

结果:
Alt

  1. 清除中间文件:
make clean

注意:前面的makefile文件中,定义的是clean的规则,按理说应该自动清除这些中间文件的,但是我运行下来并没有,看到一篇博客说需要手动删除,所以需要执行make clean。
博客地址:makefile中删除不掉*.o文件的问题

发布了57 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43343803/article/details/104643325