视觉slam学习cmake命令
CMakeLists常用命令
# 声明要求的 cmake 最低版本
cmake_minimum_required(VERSION 2.8)
# 声明一个 cmake 工程
project(HelloSLAM)
# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable(helloSLAM helloSLAM.cpp)
生成静态库
# 生成一个静态库文件
# 语法:add_library( 程序名 源代码文件 )
add_library(hello_shared helloslam.cpp)
cmake之后会生成一个lib1.a的文件,这就是静态库文件
静态库文件与动态库文件的区别在于静态库每次调用都会生成一个副本,而共享库则是只有一个副本,共享库更省空间
生成共享库
# 生成一个共享库文件
add_library(hello_shared SHARED helloslam.cpp)
cmake之后会生成一个lib2.so的文件,这就是共享库文件
头文件说明
为了让别人能够调用库文件,通常会写一个头文件,说明这些库里有什么
#ifndef LIBHELLOSLAM_H_
#define LIBHELLOSLAM_H_
// 上面的宏定义是为了防止重复引用这个头文件而引起的重定义错误
// 打印一句hello的函数,调用我库里的helloslam函数
void helloslam();
#endif
链接库文件
find_library(LIB_HELLO2 hello_shared PATHS /home/Desktop/slam14/practice/link_h/build)
if(NOT LIB_HELLO2)
message(FATAL_ERROR "libhello2 not found")
endif()
target_link_libraries(helloSLAM ${LIB_HELLO2})
#find_library(自定义名称 库名称【去掉lib和后缀】) PATHS /路径/)
如果找不到库则在编译时报错
链接eigen库
eigen库比较特殊,是一个只有头文件组成的计算矩阵的库,因此可以在CMakeLists.txt中直接添加下列代码链接eigen库
include_directories("/usr/include/eigen3")
set(CMAKE_CXX_FLAGS)命令
set(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -std=c++11 -Wall -Wno-deprecated -Werror -Wno-unused-function -Wno-builtin-macro-redefined -Wno-deprecated-declarations")
具体看链接 链接
链接Sophus
# 为使用 sophus,需要使用find_package命令找到它
find_package(Sophus REQUIRED)
target_link_libraries(useSophus Sophus::Sophus)
# REQUIRED的意思是如果找不到库会报错
terminator超级终端
vscode常用查看代码命令
链接: vscode常用看代码的功能
ubuntu常用命令
环境变量
gedit ~/.bashrc