【问题标题】:Setting default compiler in CMake在 CMake 中设置默认编译器
【发布时间】:2011-10-28 06:01:30
【问题描述】:

我在 WinXP SP3 上使用 CMake 2.8 版。每当我默认运行我的 CMakeLists 脚本时,CMake 都使用 Visual Studio 10 编译器。我已经尝试过:

SET( CMAKE_CXX_COMPILER "C:/MinGW/bin/g++" )

没有成功。如何将 MinGW 设置为我的默认编译器,这样我就不必担心在 CMakeLists 中设置编译器?

【问题讨论】:

标签: c++ compiler-construction cmake


【解决方案1】:

在 Windows CMake uses the newest Visual Studio installation 作为默认生成器下,除非在调用 CMake 时明确指定生成器。此行为是硬编码的,无法更改。

作为一种解决方法,您可以使用标题为 cmake.bat 的批处理包装脚本,其中包含以下内容:

@cmake.exe -G "MinGW Makefiles" %*

脚本应放置在系统 PATH 上的目录中,并应优先于 CMake 可执行文件cmake.exe

脚本调用 cmake.exe 并使用 MinGW 作为生成器,并将所有其他参数转发给它。

【讨论】:

    【解决方案2】:

    你只需要设置一次工具链/输出格式,通常你会在第一次运行 cmake 时这样做:

    cmake -G "MinGW Makefiles" .
    

    您可以使用自己的参数(如果有)和/或源路径来代替点。

    作为替代方案,尤其是当您不熟悉 CMake 时,请使用 windows 下的 GUI 版本(运行不带参数的 cmake-gui 而不是 cmake)。

    打开后,设置路径并单击“配置”。如果没有设置编译器,它会要求您选择一个(否则您必须清除缓存以使其重新出现)。

    更新的配置值将显示为红色,它还允许您使用常见的 Windows 对话框选择文件和路径。

    一旦配置完成并且没有错误,您可以点击“生成”来创建您的 makefile 或项目文件。以后要更新这些,您可以再次使用cmake-gui,或者只使用常用的命令行版本cmake

    【讨论】:

    • 关于使用 cmake -G "MinGW Makefiles" 的说明。至少对我来说,我必须确保 MinGW\bin 目录出现在 VisualStudio\VC\bin 目录之后的路径中。在此之前,即使使用 MinGW 生成器,也使用 c1.exe 编译器而不是来自 GNU 的 g++
    • 这并没有设置编译器,只有生成器。
    【解决方案3】:

    使用 CMake 3.15 或更高版本,您可以设置 CMAKE_GENERATOR 环境变量来指定要在您的系统上使用的默认生成器。

    【讨论】:

    • 问题是关于编译器,而不是 cmake 生成器...
    • @NikosC。不,不是,尽管标题似乎表明了这一点。在原始问题中,configure 运行默认为 Visual Studio 10 生成器,它不支持使用 g++ 编译。在这种情况下解决问题的唯一方法是切换生成器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    相关资源
    最近更新 更多