IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Cmake学习记录 -> 正文阅读

[开发工具]Cmake学习记录

CMake学习记录


一、CMake是什么?

1.一个开源的跨平台自动化构建系统,不依赖特定编译器。
2.需要编写CMakeList.txt文件来制定整个编译流程。
3.可以自动化编译源代码、创建库、生成可执行二进制文件。
注意:有专用的语法和语言来编译CMakeList.txt

二、CMake如何安装?

windows下按照官网:无脑安装
Linux下:采用sudo apt-get install cmake
或者sudo apt-get install cmake-gui//图形化的界面
但是Ubuntu源里版本可能比较低。
源码编译[需要最新版本的时候]
在官网下载后解压执行
./bootstrap
make -j2
sudo make install
cmake --version

三、CMake里面一般有什么?

例子:

#CMake 最低版本要求
cmake_minimum_required( VERSION 2.8)
#项目名称
project( 名称 )
#设置编译方法
set( CMAKE_BUILD_TYPE 编译方法)
编译方法:Release
#支持C++
set( CMAKE_CXX_FLAGS "支持C++")
支持C++-std-c++11
#查找系统里面的openCV
find_package( openCV 3  REQUIRED )
#添加项目包含路径
include_directortries( ${openCV_INCLUDE_DIRS} )
#指定源文件为工程添加可执行文件,名字为********
add_executable( 名字 名字.cpp)
#为库或可执行文件添加链接
target_link_libraries( 名字 ${openCV_LIBS} )

四、CMake使用

1.CMakeLists.txt文件

文件名严格区分大小写
工程存在多个目录,可以每个目录都放置一个CMakeLists.txt文件管理 —openCV
工程存在多个目录,也可以只用一个CMakeLists.txt文件管理 —ORBSLAM

2.CMake常用指令

指令含义
cmake_minimum_required指定要求最小的Cmake版本,如果版本小于该要求,程序终止。
project(test)设置当前项目名称test。
CMAKE_BUILD_TYPEDebug:调试模式,输出调试信息,不做优化。Release:发布模式,没有调试,全优化。 RelWithDeblnfo:类似Release,但包括调试信息。 MinSizeRel: 一种特殊的Release,会优化库的大小。
CMAKE_CXX_FLAGS编译CXX的设置标志:比如 -std=c++1、-Wall、-O3。编译过程中输出警告(warning):set(CMAKE_CXX_FLAGS “-Wall”)。追加,不会丢失之前的定义:set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Wall")。
include_directories指定头文件的搜索路径,编译查找相应头文件。例如:main.cpp中使用到路径/usr/local/include/opencv/cv.h中这个文件。CMakeLists.txt中添加include_directoires(/usr/local/include)。使用时在mian.cpp前#include“opencv/cv.h”。
set(variable value)用变量代替值。set(SRC_LST main.cpp other.cpp)表示定义SRC_LST代替后面这两个文件。
add_executable(hello main.cpp)用指定的源文件添加可执行文件。工程会用main.cpp生成一个文件名为 hello的可执行文件。
add_library(libname STATIC/SHARED sources)指定的源文件生成链接库文件。STATIC为静态链接库,SHARED为共享链接库。
target_link_libraries(target library1 library2)为库或这二进制文件添加库链接,但是要添加add_executable之后。就是上面定义了hello的这个可执行文件就是(target),如果想要依赖…的库就是需要加入依赖库library1、library2、library3。
add_subdirectory(source_dir)向当前工程添加存放源文件的之目录可以是绝对路径或相对路径。
aux_source_directory(dir varname)在目录下查找所有源文件。
message(mode “message text”)打印输出信息,mode包括FATAL_FRROR、WARNING、STATUS、DEBUG等。message(STATUS “Set debug mode”)
一些预定义好的指令PROJECT_NAME:项目名称,与project(xxx)一致。PROJECT_SOURCE_DIR:即内涵project()指令的CMakeLists所在的文件夹。EXECUTABLE_OUTPUT_PATH:可执行文件输出路径。LIBRARY_OUTPUT_PATH:库文件输出路径。CMAKE_BINARY_DIR:默认是build文件夹所在的绝对路径。CMAKE_SOURCE_DIR:源文件所在的绝对路径。
find_package(package version EXACT/QUIET/REQUIRED)功能:采用两种模式(FindXXX.cmake和XXXConfig.cmake)搜索外部库例子:find_package(OpenCV 3.4 REQUIRED)version:指定查找库的版本号。EXACT:要求该版本号必须精确匹配。QUIET:禁掉没有找到时的警告信息。REQUIRED选项表示如果包没有找到的话,CMake的过程会终止,并输出警告信息。如果XXX安装时没有找到XXXConfig.cmake,需要在CMakeLists.txt最前面添加XXX的搜索路径。就是在find_package之前添加set(XXX 路径/buifind_pfind_p
find_package(package version EXACT/QUIET/REQUIRED)当find_package找到一个库的时候,一下变量会自动初始化(也就是生成):< N A M E>_FOUND:显示是否找到库的标记(无空格)。< N A M E>_INCLUDE_DIRS :头文件路径。< N A M E>_LIBRARIES或< NAME >_LIBS:库文件
list列表操作(读、搜索、修改、排序)
If,elseif,endif判断语句。使用和C语言一致。
foreach循环指令。格式1:foreach(< 变量名> < 变量值>)格式2:foreach(变量名 RANGE 起始值 停止值 补长)
以上为常用CMake的指令,遇到不懂得,可去CMake的官网中help查询。

五、CMake-多文件目录自己生成库

如何写成多个文件。bulid/include/source/等等。
例子:

#CMake 最低版本要求
cmake_minimum_required( VERSION 2.8)
#项目名称
project( 名称 )
#设置编译方法
set( CMAKE_BUILD_TYPE 编译方法)
编译方法:Release
#支持C++
set( CMAKE_CXX_FLAGS "支持C++")
支持C++-std-c++11
#查找系统里面的openCV
find_package( openCV 3  REQUIRED )
#添加项目包含路径
include_directortries(${PROJECT_SOURCE_DIR}/include/${openCV_INCLUDE_DIRS} )
#将指定的源文件生成链接文件链接库文件。STATIC为静态库,SHARED为共享链接库。
add_library(libname STATIC/SHARED sources)
#指定源文件为工程添加可执行文件,名字为********
add_executable( 名字 名字.cpp)
#为库或可执行文件添加链接
target_link_libraries( 名字 ${openCV_LIBS} )

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:03:22  更:2022-04-18 18:07:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:08:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码