首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在MinGW64 / MSYS下的CMake中指定非默认C/C++编译器

基础概念

MinGW64 和 MSYS 是 Windows 平台下的开源软件包,用于提供 GNU 工具链,包括 GCC 编译器。CMake 是一个跨平台的构建系统生成器,可以用来管理项目的构建过程。在 CMake 中指定非默认的 C/C++ 编译器通常涉及到设置 CMAKE_C_COMPILERCMAKE_CXX_COMPILER 变量。

相关优势

  • 灵活性:允许用户使用不同的编译器可以提供更多的构建选项和优化。
  • 兼容性:在不同的编译器上测试项目可以确保代码的兼容性。
  • 性能:某些编译器可能针对特定架构或操作系统提供了更好的优化。

类型

  • 命令行参数:通过 CMake 命令行传递编译器路径。
  • CMakeLists.txt 文件:在项目的 CMakeLists.txt 文件中设置编译器路径。
  • 环境变量:设置环境变量来指定编译器路径。

应用场景

  • 当你需要使用特定版本的 GCC 编译器时。
  • 当你需要使用 Clang 而不是 GCC 时。
  • 当你需要测试项目在不同编译器上的表现时。

问题原因

无法在 MinGW64 / MSYS 下的 CMake 中指定非默认 C/C++ 编译器可能是由于以下原因:

  • 路径问题:指定的编译器路径不正确或编译器未正确安装。
  • CMake 版本:使用的 CMake 版本可能不支持某些编译器设置方式。
  • 环境配置:MinGW64 或 MSYS 的环境变量可能未正确配置。

解决方法

方法一:通过命令行指定编译器

在运行 CMake 命令时,可以通过 -D 参数来指定编译器路径:

代码语言:txt
复制
cmake -G "Unix Makefiles" -DCMAKE_C_COMPILER=/path/to/c/compiler -DCMAKE_CXX_COMPILER=/path/to/cxx/compiler /path/to/source

方法二:在 CMakeLists.txt 文件中设置编译器

在项目的 CMakeLists.txt 文件中添加以下行来指定编译器:

代码语言:txt
复制
set(CMAKE_C_COMPILER /path/to/c/compiler)
set(CMAKE_CXX_COMPILER /path/to/cxx/compiler)

方法三:通过环境变量设置编译器

在运行 CMake 之前,设置相应的环境变量:

代码语言:txt
复制
export CC=/path/to/c/compiler
export CXX=/path/to/cxx/compiler
cmake /path/to/source

示例代码

假设你有一个简单的 CMake 项目结构:

代码语言:txt
复制
my_project/
├── CMakeLists.txt
└── src/
    └── main.c

CMakeLists.txt 文件内容:

代码语言:txt
复制
cmake_minimum_required(VERSION 3.10)
project(MyProject)

set(CMAKE_C_COMPILER /path/to/c/compiler)
set(CMAKE_CXX_COMPILER /path/to/cxx/compiler)

add_executable(MyProject src/main.c)

然后运行 CMake:

代码语言:txt
复制
cmake -G "Unix Makefiles" /path/to/my_project
make

参考链接

请注意,确保指定的编译器路径是正确的,并且编译器已经正确安装在你的系统上。如果问题仍然存在,可能需要检查 CMake 的版本和配置,或者查看编译器的文档以获取更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows10下配置CMake+Make+Cpp环境

简介 在 Linux 上使用 CMake+Make+Cpp 环境简直不要太轻松,大多数 Linux 发行版都自带 Make 和 GCC,因此只需用命令安装一下 CMake 后即可使用。...为了更好地在 Windows 系统上使用 GCC 编译器,出现了一些工具合集软件,它们整合了更完备的 GCC 编译器环境供 Windows 系统下使用。...的安装路径(我这里是 C:\msys64),将 C:\msys64\mingw64\bin 加入到系统变量 Path 中: 「此电脑右键」->「属性」->「高级系统设置」->「环境变量」,然后选择...按照上述步骤安装完后,C:\msys64\mingw64\bin 路径下应当有一系列的工具,如 gcc.exe、g++.exe、cmake.exe 和 mingw32-make.exe 等。...此外,为了使用方便,将 C:\msys64\mingw64\bin 目录下的 mingw32-make.exe 复制一份并重命名为 make.exe。 3.

2.7K20

​hostguest nativelangsys及uniform cui cross compile system

:如mingw-w64只能由linux到windows,windows下的mingw64只能cross compile到arm,。...作为跨OS的编译器mingw,它里面的以前只有mingw32只能编译32位windows程序。...文章最后还希望提出一个msys2cuione的东西,在《发布msyscuione》中msys里面配备的是基于mingw32的统一CUI套件,有点过时,而现在msys2+mingw64出来了。...不是我们需要的,mingw64 sourceforge中默认的和第三方编译的大都是targetting win的,但是也有一个文件夹是targetting nonwin的,在https://sourceforge.net...准备windows上的msys2+cmake+cross compile toolchain环境 ----- 在编译复杂的程序时,需要专门的cmake工具它名字中的C就是cross compile,cmake

64830
  • 重学C语言环境搭建

    2022了,C语言也,马上C2x标准要出来了。以前很多C语言的内容都忘记了,所以记此笔记,从学C语言。 笔记使用Clion作为IDE,MinGW作为C编译器。...输入 pacman -Su 更新一下包,一路Y即可 第二次输入Y以后,窗口会关闭。再次打开即可。...至此,需要的东西,全部都给安装下来了,可以愉快的玩耍C语言了。 配置环境 之前安装好了MinGW,一般就在msys64的目录下,我默认在C盘,我msys64安装在D盘,所以MinGW也在D盘。...有mingw64和mingw32,64位系统用mingw64就好,按照下图配置好构建工具和编译器就行。 然后设置CMake,默认是Debug,如果没有,手动添加就是了。...这儿是可以设置多个编译器环境的,例如使用微软的MSVC,当然了,我们只安装了MinGW,用这个就好了。

    78720

    FFmpeg入门及编译

    FFmpeg 的编译就是在该软件中进行的,而编译时使用的编译器(cl.exe)和链接器(link.exe)则是由 Visual Studio 提供的。...1、创建新项目 2、控制台应用 3、确定项目名称及位置 4、点击创建 5、引入FFmpeg 头文件 在 项目右键 -> 属性 -> C/C++ -> 常规 -> 附加包含目录 中添加 FFmpeg...此外,由于 FFmpeg 是 C 语言库,而我们用 VS 创建的是 C++ 工程,所以在引入头文件时需要加上 extern “C” 关键字,否则的话 VS 无法将其成功编译。...CMake 目录安装到系统目录 并将其安装到 D:\CMake\ 目录下 ③、编译 SDL 之后打开 CMake-GUI,在 CMake-GUI 中指定 SDL 源码所在路径(D:/Git-Space...、打开 MSYS2 MINGW64 ②、在 fdk-aac 目录下执行如下命令 pacman -S mingw-w64-x86_64-gcc .

    1.6K62

    Windows下C语言环境搭建

    安装 MinGW 使用 Windows 的开发环境,我们绝大多数情况下都会使用 MSVC 来演示我们的程序,但 MSVC 实际上是个 C++ 编译器,对于 C 语言的语法支持也主要涉及兼容 C++ 的部分...更新完成后,执行如下命令安装 MinGW 64: pacman -S --needed base-devel mingw-w64-x86_64-toolchain 安装完成后,C:\msys64\mingw64...\bin目录下会多出很多文件,没安装前是空的, 将该目录配置到环境变量 Path 下: 然后回到 Msys2 的根目录下,点击运行 mingw64.exe: 在终端中运行 gcc -v,确认该命令正常...---- 第一行C语言代码【cmake工程结构】 完成以上步骤后,我们就可以开始通过CLion创建 CMake 工程并编写C语言代码了。...在Memory View下可以查看变量的内存视图: ---- C语言的代码风格【Google C CodeStyle/CLion配置代码风格】 通常我们使用 Google 的 C 语言代码规范来约束我们编写的代码

    3.2K10

    conan入门(二十一):解决MinGW编译Openssl的编译错误:cryptodsodso_win32.c

    error #2979》,搞明白了原因 确实,在Windows下conan编译openssl的时候,是需要msys2的,见下图 也就是说msys2自带的gcc会导致上面的编译错误,但Windows下编译...openssl又确实需要在msys2提供的bash环境下执行bash编译脚本 所以需要通过环境变量CC,CXX指定使用的MinGW-w64编译器 方案一 直接在上面的conan install命令基础上通过...比如我的Windows平台默认安装的编译器是Microsoft Visual Studio 2015,所以我的默认profile为 default [settings] os=Windows os_build...的基础上新增一个名为mingw的配置文件如下 mingw # 从默认配置文件(default)继承默认设置 include(default) [settings] # 修改编译器类型 compiler...\bin\gcc.exe # 定义环境变量强制指定C++编译器 # openssl 为纯C项目,不需要C++编译器 #CXX=P:\MinGW\mingw64\bin\g++.exe 因为mingw

    90020

    64位Windows 10下如何搭建CUNIT环境

    2 下载JUNIT tar包 JUNIT tar包是为Linux开发的,但是在Windows下可用msys2工具进行编译。...我解压完毕放在C:\CUnit-2.1-3目录下 3 安装msys2 msys2可以让你在Windows下编译Linux的代码,目前网站上有简易版和完全版,简易版下载以后还需要安装各个命令的插件,比较麻烦...5.3 打开VS Code 在插件中输入Chinese,安装重启VS Code变为中文版 在插件中输入c/c++,选第一个安装 在插件中输入code runner,选第一个安装 在插件中输入clang,...选第一个安装 5.4 配置4个json配置文件 刚才的文件是在C:\MyC\process目录下,在C:\MyC\.vscode下建立四个json文件。...相对应 "command": "clang", // 要使用的编译器,C++用clang++ "args": [ "${file

    2.4K30

    关于opentelemetry-cpp社区对于C++ Head Only组件单例和符号可见性的讨论小记

    而 opentelemetry-cpp 则是 opentelemetry 中对标准规范SDK的C++实现。...介于以上原因,大多数 C/C++ 库的解决方式是在声明接口时加一个宏 XXX_API ,然后不同的场景通过宏来切换到不同的编译分支,比如: // ================ import/export...COLLECT_GCC=C:\msys64\mingw64\bin\gcc.exe COLLECT_LTO_WRAPPER=C:/msys64/mingw64/bin/.....而函数内static变量是在第一次访问时初始化。 虽然C++ 11规定函数内static变量的初始化必须是线程安全的,但是GCC和Clang都是通过一个atomic操作去判定是否初始化的。...这样头文件里的函数和变量可见性不受全局编译选项的影响,总是共享。于此同时我们必须注意ABI兼容性,因为无法在通过 -fvisibility=hidden 个隔离多版本。

    1.1K30

    弃用VS转向VS Code

    环境准备 由于VS Code只是编辑器,其默认不支持C/C++开发,所以使用VS Code进行C/C++开发时,需要借助插件,并需要配置编译器和调试器。...3.1 安装C/C++扩展 安装C/C++ Extension Pack插件可以参考安装汉化——Simple Chinese扩展的步骤,在搜索栏输入c++,即可找到相关插件,单击安装即可。...如此,在windows平台既可以使用MinGW,也可以使用Visual Studio的编译器和调试器,本文将分别讲解这两种配置方式。...C++: g++.exe 生成活动文件",//唯一的名称,可修改为唯一的任意名称,调试时有用 "command": "D:\\msys64\\mingw64\\bin\\g++....总结 本文主要介绍了VSCode在Windows平台下的C/C++环境搭建,包括单文件、多文件和多文件夹项目,以及如何配置task.json和launch.json文件,以实现C/C++的运行和调试。

    47310

    conan入门(二十四):通过CONAN_DISABLE_CHECK_COMPILER禁用编译器检查

    conan 通过CONAN_DISABLE_CHECK_COMPILER禁用编译器检查 最近工作的一个单片机项目项目,用了一款不知名的芯片,坑爹的开发商提供的编译器中有C++编译器,但是不能正常工作。...好在我们的项目是纯C项目不需要C++编译器,只要在项目的cmake脚本中project命令指定为Cproject($NAME LANGUAGE C),这个坑就暂且绕过。...) 出错误的原因很简单, 因为单片机的C++编译器不能用,所以我在conan profile文件中没有定义环境变量CXX,在cmake工具链文件中也没有定义CMAKE_CXX_COMPILER指定C++...编译器CMAKE_CXX_COMPILER, cmake自动在PATH搜索路径中找到了我的Windows平台的MinGW编译器,MinGW编译的版本与单片机编译器版本(profile中settings.compiler.version...这个值默认为false,会检查找到的编译器版本是否与settings.compiler.version匹配。

    94420

    FFmpeg开发笔记(二)搭建Windows系统的开发环境

    “ -mingw64”,是为了让MinGW运行于64位模式,而非默认的32位模式。...如果说MSYS2相当于Windows环境的Linux模拟器,那么MinGW给MSYS2准备了32位和64位两套编译器,而我们的目标是在Windows系统模拟64位的Linux开发环境。...如果在打开MSYS2窗口时,msys2_shell.cmd命令后面没加“ -mingw64”,那么编译工具会默认装到mingw32\bin目录;只有在msys2_shell.cmd命令后面加上“ -mingw64...4、在MSYS2的控制台执行以下命令查看FFmpeg的版本信息: ffmpeg -version 发现控制台回显如下所示的FFmpeg版本与编译器版本信息,说明FFmpeg程序成功跑起来了。...by MSYS2 project) ​三、编写测试程序 关于C语言的代码验证,可采用上一篇文章介绍的测试代码及其编译命令,这里不再赘述了。

    85810

    glib:windows下基于MSYS2环境编译glib2的过程

    在网上反复找了很多次,找到这篇官方的说明《Download for Windows》,在这个说明中我只得到一个信息:windows下编译gtk+ (包括glib)最容易的方式就是在MSYS2。...对MSYS2我还是比较熟悉的,既然官方的建议也是在MSYS,那就在MSYS2下搞吧,MSYS2安装很简单,网上有教程,请自行百度。...lib) 问题来了,在MSYS2下编译用的是MinGW编译器,生成的导入库(import library)都后缀是.dll.a,MSVC怎么使用呢?...但如果你是用cmake来组织项目,在MSVC编译环境下cmake的find_library是找不到后缀为.dll.a的import library. 怎么办呢?...而默认情况下,MSYS2环境中搜索路径($PATH)中没有MSVC编译器的安装位置(bin).所以这一条命令不能执行,不能生成lib。

    3.4K10

    vscode一键配置CC++多个C及CPP文件编译与tasks.json和launch.json原理

    vscode下Cmake配置及C/C++环境配置原理 vscode一键配置配置C/C++/Cmake/make调试环境及配置原理 搜了很多的教程,发现要么教程太老,给的配置信息里面有些参数都不能使用了,...嫌每次配置麻烦的小伙伴,后文放有一键创建vscode下的c/c++的cmake项目小工具,使用小工具生成的项目,可以自己在完成修改后配成一个通用项目,直接备份一份通用项目后,以后就可以直接使用自己修改后的模板.../C++文件 直接安装C++插件后,就可以直接写代码跑了。...,我用的MinGW64也就是g++,这里是cppdgb // 这个是规定的,不是随便写,比如msvc编译器就是cppvsdbg "type": "cppdbg", "request": "launch...VSCode-C/C++项目一键创建程序( 2022-10-07更,修复了配置小错误和界面提示错误) 因为只是个小工具,所以没有考虑任何美化,如果生成失败了,自主检查一下填写的路径是否正确,路径结尾是否有多余的空格等

    7.6K41

    ege安装教程(第二银河配置要求)

    配置好C++环境`(如果之前配置好了,就不用看了)` 1.1 编译器 1.2 新建C++项目 2....安装 EGE图形库需要根据自己的编译器来进行安装,下面仅对VS2017 、CodeBlocks、DevC++、C-Free、VS Code、Eclipse for C/C++这些较为常用的编译器进行介绍...另外说明   对于多文件编译, 文件 launch.json 中的 "${workspaceFolder}\\*.cpp"   可能使编译器无法正确编译,因为目前发现有部分编译器如TDM-GCC无法识别...配置好C++环境(如果之前配置好了,就不用看了) 1.1 编译器   Clion中没有自带编译器,需要自行下载编译器,安装后设置一下编译器路径即可。   ...,第一个即为默认编译器   对于安装了多个编译器的,可以在 Toolchain 里设置一下具体使用的编译器,原设置是使用默认编译器。

    6.7K21

    Cmake大型项目设置指南(更新中)

    其中,MSVC是指微软的VS编译器,我们在安装Visual Studio的时候会自动附带上这个编译器,可以编译C/C++等语言,但是这个编译器最好还是和VS的工具搭配起来使用会更好些。...在linux或者Mac中,使用make和cmake搭配编译器来编译我们的源文件,但是在windows中,有两个选项,一是用mingw-w64中提供的编译器和构造工具make搭配cmake来进行编译(这个时候应该使用...项目名称 project(Cars) # 设置编译的C++标准 set(CMAKE_CXX_STANDARD 11) # 将此目录内的所有源文件都扫面一遍 file(GLOB Sources *.cpp...中指定这些文件夹的位置。...变量设置 cmake中有很多已经定义好的默认变量,我们要知道其代表什么并且可以使用它们。这里假设我们的项目路径在/project中,而编译后文件的存放位置为/project/build。

    57740
    领券