ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

cmake使用不同编译器编译C++代码

2021-12-31 23:32:07  阅读:314  来源: 互联网

标签:bin cmake 生成器 C++ 编译器 Studio clang ninja


cmake使用不同编译器编译C++代码


如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033

文章目录

环境:

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:

  1. https://cmake.org/cmake/help/v3.22/manual/cmake-generators.7.html

标签:bin,cmake,生成器,C++,编译器,Studio,clang,ninja
来源: https://blog.csdn.net/itas109/article/details/122263571

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有