cmake使用不同编译器编译C++代码
2022/1/1 1:07:33
本文主要是介绍cmake使用不同编译器编译C++代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
cmake使用不同编译器编译C++代码
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
文章目录
- cmake使用不同编译器编译C++代码
- 前言
- 1. CMake 生成器Generators
- 1.1 命令行构建工具生成器 Command-Line Build Tool Generators
- 1.2 IDE构建工具生成器 IDE Build Tool Generators
- 1.3 其他生成器Extra Generators
- 2. C++源文件
- 3. 编译
- 3.1 Visual Studio
- 3.2 MinGW
- 3.3 Ninja
环境:
OS: windows 10 64bit cmake: 3.22.1 (2021-12-08) Visual Studio: 2017 Community 15.9.42 llvm(clang/clang++): 12.0.1 (2021-07-09) mingw(gcc/g++): 7.3.0 ninja: 1.10.2 (2020-11-28)
前言
元构建系统是一个生成其他构建系统的构建系统,cmake就是一个非常典型的元构建系统。
本文将介绍cmake使用不同编译器编译C++代码。
1. CMake 生成器Generators
1.1 命令行构建工具生成器 Command-Line Build Tool Generators
命令行构建工具生成器,如Make和Ninja。
Makefile生成器:
-
Borland Makefiles
-
MSYS Makefiles
-
MinGW Makefiles
-
NMake Makefiles
-
NMake Makefiles JOM
-
Unix Makefiles
-
Watcom WMake
Ninja生成器:
- Ninja
- Ninja Multi-Config
1.2 IDE构建工具生成器 IDE Build Tool Generators
IDE构建工具生成器支持集成开发环境 (IDE) 项目文件,如Visual Studio和Xcode。
Visual Studio生成器:
- Visual Studio 6
- Visual Studio 7
- Visual Studio 7 .NET 2003
- Visual Studio 8 2005
- Visual Studio 9 2008
- Visual Studio 10 2010
- Visual Studio 11 2012
- Visual Studio 12 2013
- Visual Studio 14 2015
- Visual Studio 15 2017
- Visual Studio 16 2019
- Visual Studio 17 2022
其他 IDE生成器:
- Xcode
- Green Hills MULTI
1.3 其他生成器Extra Generators
-
CodeBlocks
-
CodeLite
-
Eclipse CDT4
-
Kate
-
Sublime Text 2
2. C++源文件
- main.cpp
#include <iostream> int main() { std::cout << "Hello world" << std::endl; return 0; }
- CMakeLists.txt
cmake_minimum_required(VERSION 3.11) project(main) add_executable( ${PROJECT_NAME} main.cpp)
3. 编译
3.1 Visual Studio
cmake_build_vs2017.bat
mkdir bin_vs2017 cd bin_vs2017 cmake .. -G "Visual Studio 15 2017 Win64" cmake --build . pause
注意:从Visual Studio 2019 16.1版本开始,Visual Studio CMake工程支持Clang/LLVM
3.2 MinGW
- MinGW(Make + gcc)
cmake_build_mingw32_gcc.bat
mkdir bin_mingw32_gcc cd bin_mingw32_gcc set path=D:\Qt\Qt5.12.9\Tools\mingw730_32\bin;%path% cmake .. -G "MinGW Makefiles" .. cmake --build . pause
- MinGW(make + clang)
cmake_build_mingw32_clang.bat
mkdir bin_mingw32_clang cd bin_mingw32_clang set path=D:\Qt\Qt5.12.9\Tools\mingw730_32\bin;%path% set path=C:\Program Files\LLVM\bin;%path% cmake .. -G "Unix Makefiles" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_MAKE_PROGRAM=mingw32-make cmake --build . pause
3.3 Ninja
- Ninja + Visual Studio
cmake_build_ninja_vs2017.bat
mkdir bin_ninja_vs2017 cd bin_ninja_vs2017 set path=D:\ninja_win;%path% call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 cmake .. -G "Ninja" -DCMAKE_C_COMPILER=cl -DCMAKE_CXX_COMPILER=cl cmake --build . pause
- Ninja + clang
cmake_build_ninja_clang.bat
mkdir bin_ninja_clang cd bin_ninja_clang set path=D:\ninja_win;%path% set path=C:\Program Files\LLVM\bin;%path% cmake .. -G "Ninja" -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ cmake --build . pause
- Ninja + MinGW32(gcc)
cmake_build_ninja_mingw32.bat
mkdir bin_ninja_mingw32 cd bin_ninja_mingw32 set path=D:\ninja_win;%path% set path=D:\Qt\Qt5.12.9\Tools\mingw730_32\bin;%path% cmake .. -G "Ninja" -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ cmake --build . pause
ninja下载:
https://github.com/ninja-build/ninja/releases
License
License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033
Reference:
- https://cmake.org/cmake/help/v3.22/manual/cmake-generators.7.html
这篇关于cmake使用不同编译器编译C++代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15在使用平台私钥进行解密时提示 "私钥解密失败" 错误信息是什么原因?-icode9专业技术文章分享
- 2024-11-15Layui框架有哪些方式引入?-icode9专业技术文章分享
- 2024-11-15Layui框架中有哪些减少对全局环境的污染方法?-icode9专业技术文章分享
- 2024-11-15laydate怎么关闭自动的日期格式校验功能?-icode9专业技术文章分享
- 2024-11-15laydate怎么取消初始日期校验?-icode9专业技术文章分享
- 2024-11-15SendGrid 的邮件发送时,怎么设置回复邮箱?-icode9专业技术文章分享
- 2024-11-15使用 SendGrid API 发送邮件后获取到唯一的请求 ID?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 tags标签最多有多少个?-icode9专业技术文章分享
- 2024-11-15mailgun 发送邮件 怎么批量发送给多个人?-icode9专业技术文章分享
- 2024-11-15如何搭建web开发环境并实现 web项目在浏览器中访问?-icode9专业技术文章分享