首页
学习
活动
专区
工具
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.5K20

​hostguest nativelangsys及uniform cui cross compile system

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

63630
  • 重学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,用这个就好了。

    76420

    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.3K62

    WindowsC语言环境搭建

    安装 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.1K10

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

    error #2979》,搞明白了原因 确实,Windowsconan编译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

    83920

    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.3K30

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

    而 opentelemetry-cpp 则是 opentelemetry 中对标准规范SDKC++实现。...介于以上原因,大多数 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 个隔离多版本。

    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++....总结 本文主要介绍了VSCodeWindows平台下C/C++环境搭建,包括单文件、多文件和多文件夹项目,以及如何配置task.json和launch.json文件,以实现C/C++运行和调试。

    17810

    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匹配。

    88320

    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语言代码验证,可采用上一篇文章介绍测试代码及其编译命令,这里不再赘述了。

    73710

    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编译环境cmakefind_library是找不到后缀为.dll.aimport library. 怎么办呢?...而默认情况MSYS2环境中搜索路径($PATH)中没有MSVC编译器安装位置(bin).所以这一条命令不能执行,不能生成lib。

    3.2K10

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

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

    6.7K40

    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.6K21

    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。

    50440
    领券