上位机图像处理和嵌入式模块部署(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/

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-19 00:40:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-19 00:40:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-02-19 00:40:02       87 阅读
  4. Python语言-面向对象

    2024-02-19 00:40:02       96 阅读

热门阅读

  1. 顺子日期 蓝桥杯

    2024-02-19 00:40:02       48 阅读
  2. 【orbslam2+nerf】

    2024-02-19 00:40:02       52 阅读
  3. Python 键盘模拟

    2024-02-19 00:40:02       52 阅读
  4. 24 双非计算机秋招总结

    2024-02-19 00:40:02       50 阅读
  5. 数据库事务的 4 种隔离级别

    2024-02-19 00:40:02       47 阅读
  6. C Primer Plus(第六版)16.17 复习题 第6题

    2024-02-19 00:40:02       50 阅读
  7. 110 C++ decltype含义,decltype 主要用途

    2024-02-19 00:40:02       41 阅读
  8. python - 文件

    2024-02-19 00:40:02       59 阅读
  9. C++练习

    C++练习

    2024-02-19 00:40:02      48 阅读
  10. 算法训练营day28(补), 贪心算法2

    2024-02-19 00:40:02       54 阅读