上位机图像处理和嵌入式模块部署(cmake的使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        过去我们编写windows程序的时候,习惯上都是直接使用visual studio创建工程开发。而开发linux程序的时候,则是编写好c、cpp代码之后,自己编写makefile来进行编译。要是没有git版本工具,上面的这些开发方法问题不大,但是如果引入了版本管理之后,这么做有的时候可能并不一定合适,因为有可能生成大量的、无用的中间文件。所以,这个时候我们一般引入cmake工具来进行处理。

1、cmake工具可以自动帮助生成编译工具链

        cmake的作用不是直接编译,而是帮助我们生成windows平台的sln文件、linux平台的makefile文件。这些文件如果自己创建或者写的话,很麻烦。但是有了cmake的帮助,就容易很多。

2、cmake支持windows平台和linux平台

        cmake工具不仅仅支持windows平台,还可以支持linux平台。因为,我们在开发的过程当中,两个平台都会用到,所以用cmake来做编译工具的生成是非常合适的。上位机用windows开发,用cmake生成sln;下位机一般是arm平台,用cmake 生成交叉编译的makefile,就是这样。

3、cmake使用比较简单

        不管是windows平台,还是linux平台,cmake的使用都是比较简单的。我们先以windows平台为例,假设有一个hello.cpp代码,

#include <iostream>
using namespace std;int main(int argc, char* argv[])
{std::cout << "Hello, world" << std::endl;return 0;
}

        这个时候有了cpp代码之后,我们就可以创建一个CMakeLists.txt文件,

cmake_minimum_required(VERSION 2.8)project(hello)add_executable(hello hello.cpp)

        此时,如果需要生成sln文件的话,只需要在cmd目录下输入下面这个命令即可,前提是本地已经安装了vs2017,

cmake -G "Visual Studio 15" -DCMAKE_BUILD_TYPE=debug ../

        输入这条命令之后,本地就会创建sln文件。我们打开对应的sln文件,直接编译即可。如果是linux平台的话,那么就更简单了,直接输入cmake .. 就会生成makefile。在makefile同级目录输入make命令,就可以直接编译了。

4、cmake对git版本工具特别友好

        我们都知道,编译过程中会生成大量的中间文件。很多的中间文件都特别占空间,而且没有意义。这个时候如果项目中仅仅有doc、src、manual、design file、res这些文件的话,整个项目就会显得特别清爽。版本管理也会容易很多。所以说,cmake本身对git一类的版本工具特别友好,特别方便。

5、直接安装对应版本的cmake

        目前cmake支持的系统很多,包括windows、linux、mac,这些都不足为奇。甚至于,很多的linux+arm系统,都有对应的可执行包可以安装,这些都是很方便的。以树莓派4b为例,如果需要安装cmake,可以直接在官网找到对应软件的arm64版本即可。

https://cmake.org/download/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/474800.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx 正向代理、反向代理

文章目录 前言1. 正向代理1.1 概念1.2 逻辑图1.3 使用场景 2. 反向代理2.1 概念2.2 逻辑图2.3 使用场景 前言 正向代理主要是用来解决访问限制问题&#xff1b;反向代理则是提供负载均衡、安全防护等作用 1. 正向代理 1.1 概念 正向代理是一个位于客户端和目标服务器之间的代理…

vmware workstation群晖虚拟机vmdk文件导出

为了防止群晖虚拟机中整个挂掉&#xff0c;里面的文件导不出来&#xff0c;尝试直接从vmdk中获取内容。 1、想采用diskgenius去读取文件&#xff0c;发现volume1是空的。只能读取群晖的系统文件。 2、选择另一个linux系统的虚拟机&#xff0c;选择对应的vmdk 3、如果有文件管理…

C++面向对象程序设计-北京大学-郭炜【课程笔记(三)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;三&#xff09;】 1、构造函数&#xff08;constructor&#xff09;1.1、基本概念 2、赋值构造函数2.1、基本概念2.1、复制构造函数起作用的三种情况2.2、常引用参数的使用 3、类型转换构造函数3.1、什么事类型转换构造函…

【Python中unittest(单元测试)的简单应用】

1、unittest核心组成&#xff1a; TestFixture&#xff1a;对一个测试用例环境的搭建和销毁&#xff0c;一个fixture&#xff0c;通过覆盖TestCase的setUp()和tearDown()方法来实现。如可以在setUp()中通过建立数据库连接来初始化&#xff0c;在tearDown()中清除数据库产生的数…

【c++】const引用

Hello everybody!今天给大家讲讲有关const引用部分的知识&#xff0c;因为这部分知识涉及到const与引用直接如何灵活的运用&#xff0c;且不太好理解。所以我认为讲一下这里的知识还是很有必要的&#xff01; 1.权限可缩小 首先&#xff0c;当我们定义了a&#xff0c;在给a取别…

第13章 网络 Page747~749 asio核心类 ip::tcp::resolver

3&#xff0c; ip::tcp::resolver 如果新浪的IP地址变了&#xff0c;该怎么办呢? ip::tcp::resolver 可以帮我们用上www.sina.com.cn&#xff0c;因为它负责将人类可读的多种网址信息&#xff0c;一步 到位地解析成ip::tcp::socket建立连接所需要的ip::tcp::endpoint结构&…

安装faiss环境教程

文章目录 打开环境安装faiss环境检查已安装的环境切换环境至faiss 打开环境 source activate # 打开环境安装faiss环境 conda create -n faiss_env # 安装faiss环境检查已安装的环境 conda info --envs # 检查已安装的环境切换环境至faiss conda a…

谷歌浏览器输入地址后http自动转https解决方法

谷歌浏览器输入地址后http自动转https解决方法 点击地址栏旁边的锁&#xff0c;再点击网络设置往下拉&#xff0c;找到&#xff1a;不安全内容&#xff0c;默认是屏蔽状态&#xff0c;改为允许状态&#xff0c;再去访问http 点击地址栏旁边的锁&#xff0c;再点击网络设置 往下…

计算机服务器中了_locked勒索病毒怎么办?Encrypted勒索病毒解密数据恢复

随着网络技术的不断发展&#xff0c;数字化办公已经成为企业生产运营的根本&#xff0c;对于企业来说&#xff0c;数据至关重要&#xff0c;但网络威胁无处不在&#xff0c;近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了_locked勒索…

Java数字孪生智慧工地数据大屏APP项目源码

目录 智慧工地云平台核心功能 1.劳务管理 2.视频监控 3.安全教育 4.进度管理 5.环境监测 6.塔吊监控 7.升降机监控 8.工地广播 9.深基坑高支模 10.AI识别 11.安全质量 智慧工地建设的价值和意义 危大工程管理 智慧工地聚焦施工现场一线生产活动&#xff0c;利用物…

面试经典150题【1-10】

文章目录 面试经典150题【1-10】88. 合并两个有序数组27.移除元素26.删除有序数组中的重复项80.删除有序数组中的重复项II169.多数元素189.轮转数组121.买卖股票的最佳时机1122. 买卖股票的最佳时机 II55.跳跃游戏![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ff…

【自然语言处理】seq2seq模型—机器翻译

清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现&#xff08;实验满分&#xff09;&#xff0c;只展示主要任务实验结果&#xff0c;如果需要详细的实验报告或者代码可以私聊博主 有任何疑问或者问题&#xff0c;也欢…