1. 前言:
Linux下的gcc编译本质是一个编译C语言程序的命令,通过键入命令,就可以把C源文件编译成可执行文件(xx.out)。在Windows下的软件往往都有IDE,只需要鼠标点击一下即可编译程序,但是个中原理却往往被忽视。在Linux系统下,当你拥有一个由多个源文件组成的工程时,通过键入命令的方式进行编译将是一个费时费力的事情。
前一篇文章讲了在Linux下gcc编译的四个过程,makefile保存了怎样去编译链接程序的规则,当我们在命令行执行"make"时,便会按照makefile的规则去编译程序。不过大型工程编写makefile也是一件比较麻烦的事情,所以又有了cmake,通过创建CMakeLists.txt,按照其语法键入编译的规则,通过"cmake ./(或者cmake .)"或“camke ../(或cmake ../)"便可生成makefile文件。
但整个过程还是免不了要在命令行键入“cmake”、“make”命令,为了再简单一点可以用shell写一个脚本,脚本里保存执行“cmake”、“make”等命令,最后只需要每次运行该脚本(xx.sh),就能够生成可执行文件。是不是简单很多了呢!
接下来以一个我自己建立的简单工程,来测试我以上所述的方法。
2. 实例:该目录结构是一个标准目录结构,目标是把所有源文件进行编译,可以写两个CMakeLists.txt,一个在工程根目录,一个在src目录。根目录下的如下:
src的如下:
SRC_LIST可以被两个源文件路径赋值,而且不会覆盖,容易出错的地方就是编写该文件时"./"是该文件所在的当前路径,所以一切的包含之类的都要以该文件所在路径为标准
在build目录内,输入“cmake ..“(或cmake ../)”,然后在该路径下继续输入"make",即可在bin目录下生成可执行文件
上一步的命令也可以自己写一个脚本来实现,每次运行脚本便可生成可执行文件:
3. 参考:
本例程所用到的命令都可参考以下文章:
https://blog.youkuaiyun.com/whahu1989/article/details/82078563