1.了较g++和cmake编译
2.掌握CMakeCache.txt中的相关编译操作(生成静态库和共享库,添加可执行程序,链接库)
3.重点掌握如何在IDE中进行编译
g++ helloSLAM.cpp
默认得到一个可执行文件 a.out
./a.out
g++编译指定输出的文件名的程序
g++ -o helloSLAM.exe helloSLAM.cpp
使用参数-o指定输出的文件名
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )
# 声明一个 cmake 工程
project( HelloSLAM )
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
cmake .
make
通过MakeFile文件对工程进行编译
./helloSLAM
cmake编译后会产生大量的中间文件,我们不希望自己代码发布出去后带有这么多中间文件。所以在编译工程的时候,我们通常创建一个build文件夹专门用来存放编译过程中产生的中间文件,在代码发布时可以将build文件夹删除。
mkdir build
cd build
cmake ..
make
只有带有main函数的文件才能生成可执行文件/其他文件
在CMakeCache.txt
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( helloSLAM helloSLAM.cpp )
# 添加一个库
add_library( hello libHelloSLAM.cpp )
# 共享库
add_library( hello_shared SHARED libHelloSLAM.cpp )
add_executable( useHello useHello.cpp )
# 将库文件链接到可执行程序上
target_link_libraries( useHello hello_shared )
静态库以.a作为后缀名,共享库以.so结尾。
两者的区别在于静态库每次调用都会生成一个副本,而共享库只有一个副本,更省空间
add_executable( helloSLAM helloSLAM.cpp )
会生成静态库
add_library( hello_shared SHARED libHelloSLAM.cpp )
生成共享库
使用一个库需要提供头文件文件,只要有头文件和库文件就可以调用这个库了
target_link_libraries( 可执行文件 库文件 )
如果可执行文件想调用库文件中的函数,他需要参考该库提供的头文件,以明白调用的格式。同时要将可执行文件链接到库文件上
使用kdevelop作为IDE,下载如下:
sudo apt-get update
sudo apt-get install kdevelop
但是我这边就报了很多像是E: 无法定位软件包 kdevolop
,连接失败
之类的
错
解决办法:直接换源
软件和更新---->ubantu软件下载----->使用阿里云
(1)在CMakeCache.txt中将工程调为debug模式
# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )
(2)配置
在视窗可以改变边框
右键设置断点,stop all结束