CMake 安装
CMake 下载
官方下载地址: https://cmake.org/download/
cmake下载页面
选择自己系统(Platform)对应的版本并下载
这里我们选择Windows win64-x64 Installer: Installer tool has changed. Uninstall CMake 3.4 or lower first!
CMake 下载完成
CMake 安装
安装时根据自己系统的安全设置,可能会出现如下对话框,不用担心,直接点击 "运行(R)"
安装时安全警告
CMake Steup
License
必须选择同意,否则不能进入下一步
安装选项
- 是否添加环境变量,这里我们选择 "Add CMake to the system PATH for all users"
- 是否创建桌面快捷图标,根据自身情况而定,这个只是创建桌面图标使用方便,并不会对以后的使用造成实质上的影响
安装路径
这里选择自己习惯存放程序的路径,我们这里采取默认值
安装路径
安装最后确认
经过前面的操作终于把需要配置的都配置了,下面该程序自己干活了
安装最后确认
进入安装
真正开始安装的阶段,这一阶段比较耗时,完全取决于电脑自身的配置高低,系统主要是解压文件和写磁盘
安装中
安装完成
恭喜你,终于将CMake安装完成了
安装完成页面
确认CMake安装
验证CMake是否成功安装,可以调出CMD窗口,输入cmake
,瞧瞧系统会给你说什么,如果出现如下窗口,那么恭喜你没有任何问题。
CMake安装好
那么万一出现的是如下内容呢
CMake没安装好
我们一般有如下处理步骤和处理方法:
- 1. 确认是新调出CMD窗口再进行的操作
- 2. 我们可以手动修改系统的环境变量指定CMake的bin目录位置
系统环境变量 Path
确认如图所示内容在Path中配置,如果没有可以手动输入并确定
- 3. 待2操作完成后可以再验证,如果解决那么恭喜,如果问题仍存在,那么需要重启系统(一般都能解决了,除非比较低的系统版本可能需要重启)
mingw
mingw 下载
这里给出64系统使用的mingw, https://sourceforge.net/projects/mingw-w64/
mingw下载完成
这里其实是下载的一个安装器,具体的安装是通过运行这个安装器来引导安装的
mingw 安装
开始运行安装器
mingw 安装选项
安装选项
这里需要做出对应的选择,当然完全默认没有任何问题,我们这里采用默认,继续安装
mingw 安装位置
安装位置选择
这里有坑,我们先入坑, 继续安装
mingw 安装中
安装中
安装器需要从网上下载所需要的文件,这一步耗时较长
mingw 安装完成
安装完成
环境变量设置
同CMake的一样,mingw安装完后自动了设置环境变量,你也可以通过运行其安装目录下的mingw-w64.bat
来进入运行环境
验证mingw环境是否设置好,同样新调出CMD窗口,输入gcc
命令,出入如下信息则表示安装没有问题,否则请参照CMake配置环境变量的方式来解决。
CMake+mingw 实例
我们安装完环境后来个实例运行下吧
- 编写源码文件
来个宇宙最著名的程序吧
1#include <stdio.h>
2int main()
3{
4 printf("hello\n");
5 return 0;
6}
- 编写CMake文件
1cmake_minimum_required(VERSION 3.0)
2project(Hello)
3set(SOURCE main.cpp)
4add_executable(${PROJECT_NAME} ${SOURCE})
- 生成Make file
1mkdir build
2cd build
3cmake -G"Unix Makefiles" ../
很不幸,这一步会出问题
1CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
2CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
3CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
4-- Configuring incomplete, errors occurred!
5See also "D:/tmp/build/CMakeFiles/CMakeOutput.log".
意思就是不能生成Unix Makefiles,这是缺少make程序造成的,
解决方法就是:1、找到mingw安装目录下mingw32-make.exe拷贝一份并重命名为make.exe
2、另外的原因就是安装目录下可能没有mingw32-make.exe这个文件,简单的办法就是找32位电脑拷贝一份到我们mingw的安装目录下(如果安装目录下已经有make.exe的话)
make
再运行cmake -G"Unix Makefiles" ../
1$ cmake -G"Unix Makefiles" ../
2-- The C compiler identification is GNU 7.2.0
3-- The CXX compiler identification is GNU 7.2.0
4-- Check for working C compiler: C:/Program Files (x86)/mingw-w64/i686-7.2.0-posix-dwarf-rt_v5-rev1/mingw32/bin/gcc.exe
5-- Check for working C compiler: C:/Program Files (x86)/mingw-w64/i686-7.2.0-posix-dwarf-rt_v5-rev1/mingw32/bin/gcc.exe -- works
6-- Detecting C compiler ABI info
7-- Detecting C compiler ABI info - done
8-- Detecting C compile features
9-- Detecting C compile features - done
10-- Check for working CXX compiler: C:/Program Files (x86)/mingw-w64/i686-7.2.0-posix-dwarf-rt_v5-rev1/mingw32/bin/c++.exe
11-- Check for working CXX compiler: C:/Program Files (x86)/mingw-w64/i686-7.2.0-posix-dwarf-rt_v5-rev1/mingw32/bin/c++.exe -- works
12-- Detecting CXX compiler ABI info
13-- Detecting CXX compiler ABI info - done
14-- Detecting CXX compile features
15-- Detecting CXX compile features - done
16-- Configuring done
17-- Generating done
18-- Build files have been written to: D:/tmp/build
这样就对了
- 编译
1make
什么,又有问题
1$ make
2/usr/bin/sh: -c: line 0: syntax error near unexpected token `('
3/usr/bin/sh: -c: line 0: `C:/Program Files (x86)/mingw-w64/i686-7.2.0-posix-dwarf-rt_v5-rev1/mingw32/bin/make -f CMakeFiles/Makefile2 all'
4make: *** [Makefile:84: all] Error 1
还记得前面我们安装mingw时说的坑吗,现在我们需要填坑了,文件就是万恶的C:/Program Files (x86)
,这也好办,将mingw-w64
文件夹复制到一个正常的目录吧,比如直接C:/mingw-w64
,然后需要修改环境变量
修改mingw环境变量
1$ make
2Scanning dependencies of target Hello
3[ 50%] Building CXX object CMakeFiles/Hello.dir/main.cpp.obj
4[100%] Linking CXX executable Hello.exe
5[100%] Built target Hello
- 运行
1$ ./Hello.exe
2hello
好了,终于成功了
完整过程
1、项目的目录如下所示
2、对应的文件内容
3、第一次运行可能需要输入
cmake . -G "MinGW Makefiles"
之后可以直接cmake .(其中 . 表示在当前目录下,使用的是powershell窗口,重点是这个
窗口很多windows指令和linux下可以通用
4、之后文件夹下会生成对应的makefile文件
5、然后运行make指令就可以生成window下的exe可执行文件了
通过上面的窗口可以发现其实不指定对应的make方式也是可以的,cmake应该会自动寻找对应的make环境变量,前提是你配置好对应的windows下的make环境变量。