CMake I 获取/设置编译器

这篇具有很好参考价值的文章主要介绍了CMake I 获取/设置编译器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、获取编译器信息

1.与编译器交互

(1)CMake变量

(2)CMakeLists.txt

二、设置编译器


一、获取编译器信息

        Microsoft Windows上,如果cmake生成器是Visual Studio,将选择Visual Studio中 的 C++ 和 C 编译器。

CMake提供 --system-information 标志,它将把关于系统的所有信息转储到屏幕或文件中:

cmake --system-information information.txt

information.txt部分信息如下,可以看到CMAKE_CXX_COMPILER和CMAKE_C_COMPILER的默认值。

CMake I 获取/设置编译器

1.与编译器交互

(1)CMake变量

CMake提供了额外的变量来与编译器交互:

  • CMAKE_<LANG>_COMPILER_LOADED:如果为项目启用了语言<LANG>,则将设置为 TRUE 。
  • CMAKE_<LANG>_COMPILER_ID:编译器标识字符串,编译器供应商所特有。例如, GCC 用于 GNU编译器集合, AppleClang 用于macOS上的Clang,MSVC 用于Microsoft Visual Studio编译器。注意,不能保证为所有编译器或语言定义此变量。
  • CMAKE_COMPILER_IS_GNU:如果语言<LANG>是GNU编译器集合的一部分,则将此逻辑变量设置为 TRUE 。注意变量名的<LANG>部分遵循GNU约定:C语言为 CC , C++语言为 CXX , Fortran语言为 G77 。
  • CMAKE_<LANG>_COMPILER_VERSION:此变量包含一个字符串,该字符串给定语言的编译器版本。版本信息在 major[.minor[.patch[.tweak]]] 中给出。注意,不能保证所有编译器或语言都定义了此变量。

(2)CMakeLists.txt

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(getinfo)

message(STATUS "is the C++ compiler loaded? ${CMAKE_CXX_COMPILER_LOADED}")
if(CMAKE_CXX_COMPILER_LOADED)
	message(STATUS "C++ compiler id: ${CMAKE_CXX_COMPILER_ID}")
	if(CMAKE_COMPILER_IS_GNUCXX)
		message(">CMAKE_COMPILER_IS_GNUCXX")
	else()
		message(">CMAKE_COMPILER_IS_NOT_GNUCXX")
	endif()	
	message(STATUS "C++ compiler version is: ${CMAKE_CXX_COMPILER_VERSION}")
endif()

message(STATUS "is the C compiler loaded? ${CMAKE_C_COMPILER_LOADED}")
if(CMAKE_C_COMPILER_LOADED)
	message(STATUS "C compiler id: ${CMAKE_C_COMPILER_ID}")
	if(CMAKE_COMPILER_IS_GNUCC)
		message(">CMAKE_COMPILER_IS_GNUCC")
	else()
		message(">CMAKE_COMPILER_IS_NOT_GNUCC")
	endif()	
	message(STATUS "C compiler version is: ${CMAKE_C_COMPILER_VERSION}")
endif()

配置输出:

CMake I 获取/设置编译器

二、设置编译器

        CMake将语言的编译器存储在 CMAKE_<LANG>_COMPILER 变量中,其中<LANG>是受支持的任何一种语言,比如 CXX 、 C 或 Fortran 。用户可以通过以下两种方式之一设置此变量(配置时,CMake会进行一系列平台测试,以确定哪些编译器可用,以及它们是否适合当前的项目,一个合适的编译器不仅取决于我们所使用的平台,还取决于我们想要使用的生成器。

1. 使用CLI中的 -D 选项(推荐使用)

> cmake -D CMAKE_CXX_COMPILER=clang++ ..

2. 通过导出环境变量 CXX (C++编译器)、 CC (C编译器)和 FC (Fortran编译器)。文章来源地址https://www.toymoban.com/news/detail-438847.html

#使用这个命令使用 clang++ 作为 C++ 编译器
> env CXX=clang++ cmake ..

到了这里,关于CMake I 获取/设置编译器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python在线编译器搭建,python在线编译器源码

    本篇文章给大家谈谈python在线编译器搭建,以及python在线编译器源码,希望对各位有所帮助,不要忘了收藏本站喔。 1. PyCharm集成开发环境 2. PyCharm的下载与安装 3. Pycharm的使用 3.1 创建Python项目 3.2 创建子目录 3.3 创建Python文件 3.4 切换解释器 3.5 常用快捷键 4. Pycharm常用配置

    2024年03月25日
    浏览(60)
  • 编译器(Compiler)及C/C++编译器安装(c+安装)

    目录 一、常用编程语言的编译器(compiler) 概述 二、GCC、MinGW、MinGW-w64 、TDM-GCC、Cygwin、MSYS、MSYS2的区别 三、MinGW-w64编译器套件下载及安装 四、MinGW-w64安装后,windows环境变量配置(设置) 五、编译器的运行及其与开发环境的关系、编译器的来源        机器语言是一种计算机指

    2024年02月07日
    浏览(66)
  • 探索Kotlin K2编译器和Java编译器的功能和能力

    文章首发地址 Kotlin K2编译器是Kotlin语言的编译器,负责将Kotlin源代码转换为Java字节码或者其他目标平台的代码。K2编译器是Kotlin语言的核心组件之一,它的主要功能是将Kotlin代码编译为可在JVM上运行的字节码。 编译过程: Kotlin K2编译器将Kotlin源代码作为输入,并经过词法分

    2024年02月11日
    浏览(46)
  • 前端框架编译器之模板编译

    编译原理:是计算机科学的一个分支,研究如何将 高级程序语言 转换为 计算机可执行的目标代码 的技术和理论。 高级程序语言:Python、Java、JavaScript、TypeScript、C、C++、Go 等。 计算机可执行的目标代码:机器码、汇编语言、字节码、目标代码等。 编译器 (Compiler):是一种将

    2024年04月28日
    浏览(45)
  • 【C语言】--编译及编译器

    夫学须静也,才须学也;非学无以广才,非志无以成学 个人主页:【😊个人主页】 系列专栏:【❤️系列专栏】 C语言一直以来都是初入编程的小白们的必修课,作为程序员必学语言之一,C语言自然有属于它的奥秘,接下来就由我来带领大家走进C语言的世界吧🚗🚗🚗 1、

    2024年02月13日
    浏览(54)
  • 编译原理课程设计--C语言编译器

    源程序1: 源程序1词法分析结果: 与程序1语法分析结果(部分) 源程序1四元式: 源程序1优化后的四元式: action-goto表(部分) 文件目录: (1)掌握语义分析过程,即语法制导翻译过程。 (2)在语法分析的LR分析程序中的基础上添加程序,进行语义分析,生成源程序的四

    2024年02月08日
    浏览(56)
  • openharmony 编译LLVM编译器基础架构

    third_party_llvm-project: 管理员 liwentao_uiw dhy308 huanghuijin (1) 缺少依赖,一次安装好几个依赖 (2) case in的语法识别不了 实际上case in是没有问题的,主要是结尾需要改成Unix结尾

    2024年01月19日
    浏览(44)
  • 【Linux工具】编译器、调式器、项目自动化构建工具以及git的使用(1编译器)

    作者:爱写代码的刚子 时间:2023.6.3 本篇博客主要详细介绍Linux中十分重要的工具:编译器,灵活使用这些工具是Linux中一项必备技能。项目自动化构建工具、调式器、git工具会在下一篇博客中进行介绍。 Linux编译器-gcc/g++使用 gcc编译C语言: g++编译C++: gcc只能编译C语言,而

    2024年02月09日
    浏览(67)
  • 提速Rust编译器!

    Nethercote是一位研究Rust编译器的软件工程师。最近,他正在探索如何提升Rust编译器的性能,在他的博客文章中介绍了Rust编译器是如何将代码分割成代码生成单元(CGU)的以及rustc的性能加速。 他解释了不同数量和大小的CGU之间的权衡以及Rustc是如何使用LLVM并行化代码生成和优

    2024年02月13日
    浏览(32)
  • 【linux】编译器使用

    目录 1. gcc ,g++ 编译器使用 a. 有关gcc的指令(g++同理) 2. .o 文件和库的链接方式 a. 链接方式 b. 动态库 和 静态库 优缺点对比 c. debug 版本 和 release 版本 注意: linux下自带gcc编译器,如果要安装g++编译器; sudo yum install -y gcc-g++ (普通用户) gcc + 文件名 得到可执行文件 gcc + 文

    2024年04月26日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包