Cmake 在windos/mac/linux端安装 make 成可执行文件
-
安装
cmake官方下载地址 -
mac 环境配置
# Add Cmake Root to Path
export CMAKE_ROOT=/Applications/CMake.app/Contents/bin/
export PATH=$CMAKE_ROOT:$PATH
当关闭命令行窗口后,再重新开启一个命令行窗口,系统仍然表示无法识别cmake命令,再终端输入下面的命令
sudo "/Applications/CMake.app/Contents/bin/cmake-gui" --install
- Linux 环境配置
安装cmake和cmake-gui
sudo apt-get install cmake cmake-gui
- Windos 环境配置
根据安装路径添加环境变量
C:\Program Files\CMake\bin
在中终端输入
cmake version 3.19.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
由于linux和mac系统下, 根据cmake生成的makefile文件,进行make编译链接 生成可执行文件比较简单,此文主要介绍wini10下,生成exe。
win10下利用cmake 和g++编译器 生成exe
1.下载安装MinGW
1.1 下载安装32位MinGW
32位:http://www.mingw.org/
点击Downloads,进入网址
https://osdn.net/projects/mingw/releases/
点击图标:
- 安装mingw
包管理器安装完成后将弹出这个界面:
找到mingw32-gcc-g++-bin
,右键点击Mark for Installation
。
点击左上角的Installation
菜单中的Apply changes
选项,管理器将开始在线安装或更新被选中的组件。
如果由于某种原因安装未能成功,在退出程序前程序将给予提示,选择review changes
选项重新安装即可。
根据需要安装:
mingw32-gdb-bin
mingw32-get-bin
通过运行 mingw-get-setup.exe 可以安装 mingw-get.exe 。
使用 mingw-get install 命令,可以安装以下语言的编译器或相关工具:
gcc, g++, gdb, mingw32-make, fortran
mingw-get install gdb
mingw-get install g++
- 配置环境变量(根据安装路径)
C:\MinGW\bin
C:\MinGW\include
C:\MinGW\lib
- 查看g++ 版本
D:\CProj\CmakeProj\demo1
λ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/9.2.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-9.2.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-static --enable-shared --enable-threads --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --enable-libgomp --disable-libvtv --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --disable-build-format-warnings --prefix=/mingw --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --enable-nls --with-pkgversion='MinGW.org GCC Build-2'
Thread model: win32
gcc version 9.2.0 (MinGW.org GCC Build-2)
1.2 下载安装mingw-64
- 配置环境变量
在path中添加:
C:\Program Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin
2 cmake 选取g++编译器 生成exe
备注:1、以下操作在cmder
窗口下操作
2、在MinGW的bin 目录下: C:\MinGW\bin
里面的mingw32-make.exe 更改为make.exe,替换原有的make.exe (可以在终端直接使用make install)
文件tree:
- hellow.cpp
#include <iostream>
using namespace std;
int main() {
cout<<"Hello World"<<endl;
return 0;
}
- CMakeLists.txt
set(CMAKE_C_COMPILER "gcc") #设置C编译器,源码只有cpp文件,没有.c文件,则不需配置
set(CMAKE_C_FLAGS "-g -Wall -I /c/MinGW/include -L /c/MinGW/lib")
set(CMAKE_CXX_COMPILER "g++") #设置C++编译器 #include和lib的位置要和自身安装的位置一致
set(CMAKE_CXX_FLAGS "-g -Wall -I /c/MinGW/include -L /c/MinGW/lib")
PROJECT (Hellow CXX)
SET(SRC_LIST hellow.cpp)
ADD_EXECUTABLE(Hi ${SRC_LIST})
MESSAGE(STATUS "This is BINARY dir " ${HELLO_BINARY_DIR})
MESSAGE(STATUS "This is SOURCE dir " ${HELLO_SOURCE_DIR})
备注:
Set:
是用来显式的定义变量的,我们之前用到的是SET(SRC_LIST main.cpp)如果有多个源文件,也可以定义成SET (SRC_LIST hello.cpp test1.cpp test2.cpp)
定义了这个工程会生成一个文件名为hello的可执行文件,相关的源文件是
SRC_LIST
中定义的源文件列表
- 执行
D:\CProj\CmakeProj\demo1\build
λ cmake -G "MinGW Makefiles" -D "CMAKE_MAKE_PROGRAM:PATH=C:/MinGW/bin/make.exe" ..
-- The CXX compiler identification is GNU 9.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/MinGW/bin/g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- This is BINARY dir
-- This is SOURCE dir
-- Configuring done
-- Generating done
-- Build files have been written to: D:/CProj/CmakeProj/demo1/build
D:\CProj\CmakeProj\demo1\build
λ ls
cmake_install.cmake CMakeCache.txt CMakeFiles/ Makefile
D:\CProj\CmakeProj\demo1\build
λ make -j4
Scanning dependencies of target Hi
[ 50%] Building CXX object CMakeFiles/Hi.dir/hellow.cpp.obj
[100%] Linking CXX executable Hi.exe
[100%] Built target Hi
D:\CProj\CmakeProj\demo1\build
λ .\Hi.exe
Hello World