目录
为什么要用CMake
windows10 命令行使用cmake
CMake - gui的使用(windows 图像界面cmake)
相关文章
Linux下|命令行用法
为什么要用CMake
一、写本文的目的
CMake有很多复杂且与程序结构密切相关的功能,诸如跨平台编译,生成安装包,输出标准构建文档等等,学习CMake能可加深对程序架构的理解与认识。
二、CMake是什么
--CMake是一个跨平台的编译(Build)工具,可以用简单的语句来描述所有平台的编译过程。
点到为止:“CMake是一个帮助我们实现编译过程的软件。”
新建工程实现一个控制台输出Hello World!的程序的步骤:
大家需要做的操作大概是如下几步:
n 新建项目
n 新建c++文件
n 在c++文件内编写程序
n 添加源/头文件进工程
这是完成一个工程建立的最基本步骤。
现在考虑一种更好的情况,当我们通过一些手段已经得到了我们想要的源码.cpp,这个时候我们再建立工程的步骤就更加简单了,只需要进行第一步和第四步即可。That`s the point,CMake的作用就是帮助你在拥有源码的情况下帮助你实现第一步和第四步的。
如图所示,是一个深度学习框架的部分工程列表。里面有超过40个互相调用的工程共同组成,一些用于生成库文件,一些用于实现逻辑功能。他们之间的调用关系复杂而严格,如果我想在这样复杂的框架下进行二次开发,显然只拥有它的源码是远远不够的,还需要清楚的明白这几十个项目之间的复杂关系,在没有原作者的帮助下进行这项工作几乎是不可能的。
即使是原作者给出了相关的结构文档,对新手来说建立工程的过程依旧是漫长而艰辛的,因此CMake的作用就凸显出来了。原作者只需要生成一份CMakeLists.txt文档,框架的使用者们只需要在下载源码的同时下载作者提供的CMakeLists.txt,就可以利用CMake,在”原作者的帮助下“进行工程的搭建。
windows10 命令行使用cmake
1、下载源码包如: srccode
2、在源码包srccode下创建文件加build
3、windows上打开powershell
4、在powershell上cd切换到 srccode/build 下
5、假如CMakeLists.txt文件在srccode目录下
运行命令 “cmake ..” 执行工程创建,因为当前目录在build,..表示CMakeLists.txt在上一层目录
最后在build目录下生成libevent.sln工程,用VS打开即可
CMake - gui的使用(windows 图像界面cmake)
首先通过我在群里发布的安装包安装CMake。在安装时要确保系统成功的添加了CMake的环境变量。因为只有这样你才能够在cmd中启动和使用CMake。当然本文中不会介绍如何在cmd中使用CMake。
我们讨论一种更加”所见即所得“的使用方法:CMake –gui。你可以在CMake的安装路径下的bin文件夹中找到CMake – gui,如图所示。
打开后就可以进入gui。
Gui界面如图所示,在Whereis the source code后面的小白框中添加你所下载的源码路径,并且确保你将CMakeLists.txt放置其中。Where to build the binaries后的小白框是你希望将编译好的工程存放在哪个路径当中。当你完成上述工作后,点击配置按钮,用于配置你编译器类型。你可以选择32位或者64位VS或者MinGW等等,看你的需要决定。
之后点击Finish,完成配置,如果你的配置参数(在配置和生成按钮上有个表框,里面可以修改生成工程的相关参数,如使用什么样的运算库,是否给其他语言留出接口等等,参考你所构建工程的原作者写给你的文档进行修改)没有出错的话,再点击Generate生成对应的工程文件。如果你选择VS作为IDE那么你应该会在Where to build the binaries这个目录下找到生成的.sln文件,打开工程,设置ALL_BUILD为活动项目,编译即可。
原文:https://blog.csdn.net/gua_MASS/article/details/61620481
相关文章
Cmake 如何用别人写好的Cmake生成对应平台的工程
《CMake介绍与使用》:https://blog.csdn.net/gua_MASS/article/details/61620481
Cmake (CmakeList)命令详细解释
《CMake进阶之初识CMake》:https://blog.csdn.net/ztemt_sw2/article/details/81355096
CMake入门1——CMake与VS编译器和nmake的结合使用
https://blog.csdn.net/yaoyuanyylyy/article/details/79024962
Linux下|命令行用法
https://www.cnblogs.com/lidabo/p/7359422.html