Cmake

cmake_minimum_required(VERSION 3.18.1)

声明使用的最低版本

project("myName")

指定当前工程名称

set(src_list test1.cpp test2.cpp test3.cpp)

用来显示的定义变量,将test.cpp等多个源文件用空格隔开赋值给src_list

message(status "这里是输出信息")

使用message向屏幕输出信息,status表示输出前添加“--”

add_library(myTest myTest.cpp)

生成静态库

add_library(myTest shared myTest.cpp)

生成动态库.so

add_library(myTest shared src/test1.cpp src/test2.cpp)

把多个源文件生成一个库,多个cpp文件用空格隔开

find_package(OpenCV REQUIRED QUIET)

用来查找依赖包,把一整个依赖包的头文件包含路径、库路径、库名字、版本号都获取到,可能会失败

OpenCV要查找的包名

REQUIRED 当未找到满足条件的包(例如版本号不匹配,或指定组件未找到等),会终止CMake的执行过程,并输出一条错误信息。如果未指定该选项,即使未找到满足条件的包,CMake的执行过程也会继续

QUIET 禁止输出信息,正常情况当找到包时,CMake会打印一些信息,指定该选项时会禁止掉这些打印。例外是当同时指定QUIET时,如果找不到包,仍然会输出错误信息并终止执行过程

COMPONENTS 指定要查找的组件。通常一个包可能包含多个组件(可以理解为多个库,例如把C++的std看成一个包的概念,那么vector就是std下的其中一个组件),我们的工程可能会依赖包下的具体某个组件,因此可以通过这个选项来检测这些组件是否存在。通常的约定是,该选项后的组件应该都找到时才认为包找到,否则认为未找到满足条件的包。这个约束会依赖包的.cmake来实现,通过find_package命令传入的COMPONENTS可以通过<PackName>_FIND_COMPONENTS这个变量来获得

OPTION_COMPONENTS与上面的区别是不要求组件必须存在,不影响Cmake的执行

_FOUND用来表示包是否找到,true表示找到,false表示未找到

find_dependency(MYDEP REQUIRED)

依赖其他库,和find_library用法相同

catkin_package()

给下游(使用本包的其他包)使用,也就是向其他包导出依赖,这些依赖可能是本包给其他包提供的公共头文件、库,或者是本包依赖的其他包

有五种方式

DEPENDS和CATKIN_DEPENDS用来告诉catkin需要将你程序包的哪些依赖项,传递给使用find_package(...)查找你的程序包的程序包

INCLUDE_DIRS 导出包的路径

LIBRARIES 导出项目中的库

CATKIN_DEPENDS 该项目依赖的其他catkin项目

DEPENDS 该项目依赖的非catkin Cmake项目

inlcude_directories()

向工程添加多个特定的头文件搜索路径

link_directories()

向工程添加多个特定的库文件搜索路径

add_executable(main main.cpp main1.cpp main2.cpp)

将cpp文件生成可执行文件main

target_link_libraries(main test.so user.so)

为可执行文件main添加需要链接的库

include()

用来载入并运行来自于文件或模块的 CMake 代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值