【ubuntu】常用命令及工具-Cmake、terminator超级终端、常用命令

本文介绍了如何使用CMakeLists.txt来生成静态库和共享库,并展示了如何编写头文件进行接口说明。此外,还详细说明了如何在CMake中链接Eigen库,以及如何通过find_package链接Sophus库。同时提到了Ubuntu下的terminator终端工具和VSCode的代码查看功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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超级终端

链接: Ubuntu下terminator终端工具使用技巧

vscode常用查看代码命令

链接: vscode常用看代码的功能

ubuntu常用命令

环境变量

gedit ~/.bashrc

CONTINUE

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值