【Free Style】DevCloud:Cmake的多平台编译构建
本文主要介绍CMake编译工具的使用,通过一个简单的C++程序在windows和linux的编译执行过程来深入了解CMake。
Window编译环境:
Ø Win10系统
Ø Cmake:cmake-3.7.0-win64-x64.msi安装包
Ø minGW+Msys:mingw-get-setup.exe在线安装包
Linux编译环境:
Ø 华为软件开发云-编译构建服务
“CMake”是“cross platform make”的缩写,是一个跨平台的编译工具, 它比我们常用的“make”更高级,可以在CmakeLists.txt用简单的语句来描述所有平台的编译过程。为了说明CMake给编译带来的简化和优点,我们来简述一下C++语言从简单到复杂项目,涉及不同平台时编译的变化:单文件编译,仅仅一条g++ main.cpp命令即可生成可执行文件a.exe;当源文件越来越多,无法一条一条命令执行时,就需要make自动编译工具,开发人员需要做的就是写make执行时所需要依据的脚本——makefile;但是makefile抽象程度不高,对windows OS也不友好,cmake完美解决了这种多平台编译的问题,Cmake 的工具链非常简单cmake+make, cmake生成标准构建方式的输入,如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces,然后开发人员可以使用自己熟悉的IDE生成最终可执行文件。
代码示例:
helloword.cpp
CMakeLists.txt
CMakeLists中的指令是大小写无关的,而参数是大小写相关的。
Ø cmake_minimum_required() cmake要求的最低版本。
Ø project(pojectname [CXX] [C] [Java]) projectname为工程名称,后面可以指定支持的语言类型,不注明表示默认支持所有语言。
Ø AUX_SOURCE_DIRECTORY(参数1 参数2)将所有在参数1路径下的源文件名,以列表的形式赋值给参数2的变量。这条指令比显示定义SET(DIR_SRCS helloword.cpp)更加方便,避免为一个库或可执行目标罗列源文件。
Ø add_executable(参数1 参数2)参数1是新引入的可执行文件,该文件由对参数2取值获得的源文件列表来编译构建的(变量使用${}方式取值)。参数1在工程范围内必须是唯一的。
Window编译环境:
1. 安装cmake
下载并执行cmake-3.7.0-win64-x64.msi安装包
2. 运行cmake
a) 运行安装路径C:\Program Files\CMake\bin下的cmake-gui.exe。
b) 按照下图配置代码路径,其中build是新建的空文件,是生成的二进制可执行文件存放路径。
c) 点击“Configure”选择MinGW的默认配置
Tips:
ü 由于环境变量的设置,可能导致自动load的脚本文件路径错误,需要手动修改,下文就是由于CMAKE_SH错误引起的配置失败。
ü minGW自带的mingw32-make.exe需要改成make.exe,否则执行下文执行make命令时会提示命令无法找到,当然你也可以通过其它手段修正这个错误。
d) Configure和Generate成功
Configure的log信息
The C compiler identification is GNU 6.3.0
The CXX compiler identification is GNU 6.3.0
Check for working C compiler: C:/MinGW/bin/gcc.exe
Check for working C compiler: C:/MinGW/bin/gcc.exe -- works
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Detecting C compile features
Detecting C compile features - done
Check for working CXX compiler: C:/MinGW/bin/g++.exe
Check for working CXX compiler: C:/MinGW/bin/g++.exe -- works
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Detecting CXX compile features
Detecting CXX compile features – done
Configuring done
Generate后生成Makefile
3. 执行make
在build文件夹下执行make命令,生成最终的bin.exe可执行文件。
Linux编译环境:
1. 云端建立代码仓库
华为软件开发云的登录地址是https://devcloud.huaweicloud.com/,如果没有账号,请先注册。
代码模板使用cppDemo,实例代码中包含.gitignore,CMakeLists.txt,helloworld.cpp和README.md,其中源文件代码和CMakeLists代码和前文所述一致。
2. 云端创建构建任务
3. 执行编译构建
Tips:
ü 输出log中,$ /usr/bin/cmake -G "Unix Makefiles" Generator指定的构建系统,当前创建了Unix系统标准Makefile
4. 下载可执行包
从【构建】->【构建历史】中下载bin包,通过X*** P传到远端云主机
5. 查看软件包
6. 执行软件包
- 点赞
- 收藏
- 关注作者
评论(0)