目录:
- 用g++编译
- 1)用cmake编译
2)分隔中间文件 - 新建并使用库
用g++编译:
编写一个c++程序,用g++编译
编译完成后在当前路径下生成一个a.out文件,执行
用cmake编译:
通常一个小型C++项目可能包含十几个类,各类之间还存在着复杂的依赖关系,其中一部分要编译成可执行文件,另一部分编译成库文件。如果仅依靠g++命令,我们需要输入大量的编译指令,整个过程会非常繁琐。使用cmake会帮我们解决代码的依赖关系,而无需输入一堆g++命令。
新建一个CMakeLists.txt文件,内容如下,该文件用于告诉cmake我们要对这个目录下的文件做什么事情(cmake语法)
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )
# 声明一个 cmake 工程
project( HelloSLAM )
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( helloSLAM helloSLAM.cpp )
在当前目录使用cmake . 命令
cmake编译生成Makefile文件
用make命令根据Makefile文件内容编译整个工程
编译成功会生成对应的可执行程序,执行它
分隔中间文件
将cmake生成的中间文件统一存放在新建build文件夹中
新建并使用库
建立一个库文件
我们在CMakeLists.txt里加上以下内容,将该文件编译成一个叫hello的库
然后用cmake编译整个工程
cd build
cmake ..
make
这时,在build中就会声称一个libhello.a文件,这便是我们得到的库(静态库)
若要生成共享库,只需添加以下语句
此时得到的便是.so文件
只要有了头文件和库文件,就可以调用这个库了
下面编写libhello的头文件
下面写一个cpp文件来调用这个函数
#include"libHelloSLAM.h"
int main()
{
printHello();
return 0;
}
然后在CMakeLists.txt中添加一个可执行程序的生成命令,链接到刚才使用的库上:
执行