功能:输出字符串:hallo slam
文件路径:~ /Jane/ch2/test1
建立文件夹,操作如下图 :步骤1到步骤3
建立main.cpp文件,操作 :步骤4
进入main.cpp文件编写程序,操作 :步骤5
main.cpp文件:代码如下
这里我们不采用g++编译器,因为如果只靠g++命令,在后期我们需要输入大量的编译指令,整个编译过程就会变得繁琐。在这里,我们只用cmake管理源代码。
在~/Jane/ch2/test1中新建文件CMakeLists.txt,操作如下:
CMakeLists.txt文件(需要遵守cmake的语法):内容如下
第一句:声明要求的cmake最低版本
第二句:声明cmake工程
第三句:添加一个可执行程序
#语法 add_executable(可执行程序的名字 源代码文件)
保存退出CMakeLists.txt文件,在当前目录下,输入命令:cmake . (对当前目录下的工程进行分析)
用make命令对工程进行编译
查看当前目录下的文件,我们就可以发现生成的可执行文件:hello_code_name
执行hello_code_name(操作2),这就简单的完成了一个简单的字符串输出程序
关于cmake
cmake 过程处理了工程文件之间的关系,而 make 过程实际调用了 g++ 来编译程序。
如果想新增一个可执行文件时,只需在 CMakeLists.txt 中添加一行“add_executable”命令即可,而后续的步骤都是不变的。cmake 帮我们解决代码的依赖关系,无需输入一大串 g++ 命令
关于中间文件
在这个过程中,cmake 生成的中间文件还留在我们代码文件当中。如果我们想要删除编译过程中生成的中间文件时,就十分的不便。一种更好的做法是让这些中间文件都放在一个中间目录中,在编译成功后,把这个中间目录删除即可。
我们先将之前编译产生的中间文件删除,新建一个中间文件夹夹“build”,然后进入 build 文件夹,通过 cmake .. 命令,对上一层文件夹,也就是代码所在的文件夹进行编译。这样,cmake 产生的中间文件就会生成在 build 文件夹中,与源代码分开。当我们发布源代码时,只要把 build 文件夹删掉即可。
操作如下:
使用make命令编译工程,通过ls命令就可以在“build”文件夹下看到之前的编译产生的中间文件
升级一下:
使用库
在一个 C++ 工程中,只有带有 main 函数的文件才会生成可执行程序。而另一些代码,我们只想把它们打包成一个东西,供其他程序调用。这个东西叫做库。
一个库往往是许多算法、程序的集合,我们会在之后的练习中,接触到许多库。接下来要学习如何用 cmake 生成库,并且使用库中的函数。
为了和之前的test1文件夹分开,我们在目录~/Jane/ch2下新建文件夹text2 (步骤2)
新建一个文件:libhelloslam.cpp (步骤3)
在文件libhelloslam.cpp内书写源代码:
#include <iostream>
using namespace std;
void printfhelloslam( )
{
cout<<"hello slam"<<endl;
}
新建文件:main.cpp (步骤3)
在文件main.cpp内书写源代码:
#include "libhelloslam. h"
int main( )
{
printfhelloslam( );
return 0;
}
为了使用这个库libhelloslam,我们需要提供一个头文件,说明这些库里都有些什么。因此,对于库
的使用者,只要拿到了头文件和库文件,就可以调用这个库了。下面我们来写 libhelloslam的头文件
新建头文件:libhelloslam. h(步骤5)
在文件libhelloslam. h内书写源代码:
#ifndef LIBHELLOSLAM H_ //头文件的一个格式
#define LIBHELLOSLAM H_
void printfhelloslam(); //声明函数
#endif
在之前的 CMakeLists.txt的基础上添加一个可执行程序的生成命令,链接到刚才我们使用的
库上:
新建CMakeLists.txt文件(步骤6)
cmake_ minimum_ required(VERSION 2.8) //声明要求的cmake最低版本
project(hello_ project) //声明一个工程
add_ executable(helLo_ code_ name main.cpp) //添加一个可执行文件
target_ link_ libraries(hello_ code_ name helloslam) //连接到 “helloslam”库上
add_ library(helloslam libhelloslan.cpp) //文件libhelloslam.cpp将编译成一个叫做“helloslam”的库
最后我们使用命令编译工程:
cd build
cmake ..
make
这时,在 build 文件夹中会生成一个 libhelloslam.a 文件,这就是我们得到的库
你的关注就是我最大的动力,如果对你有帮助,帮忙点个赞