在CMake中设置默认编译器

Ama*_*ani 35 c++ compiler-construction cmake

我在WinXP SP3上使用CMake 2.8版.每当我默认运行我的CMakeLists脚本时,CMake使用Visual Studio 10编译器.我试过这样做:

SET( CMAKE_CXX_COMPILER "C:/MinGW/bin/g++" )
Run Code Online (Sandbox Code Playgroud)

没有成功.如何将MinGW设置为我的默认编译器,以便我不必担心在CMakeLists中设置编译器?

sak*_*kra 26

在Windows下,CMake 使用最新的Visual Studio安装作为默认生成器,除非在调用CMake时显式指定了生成器.此行为是硬编码的,无法更改.

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

@cmake.exe -G "MinGW Makefiles" %*
Run Code Online (Sandbox Code Playgroud)

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

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


Mar*_*rio 16

您只需设置一次工具链/输出格式,通常在第一次运行cmake时执行此操作:

cmake -G "MinGW Makefiles" .
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

  • 关于使用cmake -G"MinGW Makefiles"的说明.至少对我来说,我必须确保MinGW\bin目录出现在VisualStudio\VC\bin目录之后的Path中.在此之前,即使使用MinGW生成器,也使用c1.exe编译器代替GNU中的g ++ (2认同)

Com*_*sMS 4

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