【发布时间】:2020-03-24 12:33:22
【问题描述】:
我想使用 CMake 和 MinGW 从 Windows PowerShell 命令行构建我的 C++ 应用程序。
当我使用这些命令以“正常方式”执行此操作时:
mkdir build
cd build
cmake ..
make
CMake 选择 Visual Studio 作为默认编译器,并且不会为我生成任何 Makefile。
我希望 CMake 使用 MinGW 作为默认编译器,并生成 Makefile。 当我运行这些命令时,它完全按照我想要的方式工作,添加 -G "MinGW Makefiles" 标志:
mkdir build
cd build
cmake .. -G "MinGW Makefiles"
make
如何在不添加 -G "MinGW Makefiles" 标志的情况下让 CMake 始终以这种方式运行?
我尝试在 Windows 中设置一个CMAKE_GENERATOR 环境变量,并将其指向“path\to\mingw\bin”、“path\to\mingw\bin\mingw32-make.exe”,以及一个读取为“MinGW Makefile”的字符串。
在运行 refreshenv 然后尝试再次运行 cmake .. 后,这些对我都不起作用。
有人知道这是否是用于指定 CMake 的默认行为的正确环境变量吗?如果是,我应该使用什么值?
【问题讨论】:
-
只需将 MinGW 添加到 PATH 变量中,然后试试这个
find_program(CMAKE_CXX_COMPILER NAMES $ENV{CXX} g++ PATHS ENV PATH NO_DEFAULT_PATH) -
根据that answer,没有变量会影响CMake默认使用的generator。但是根据bugreport,事情可能会改变......在未来。
-
我认为你的问题是错误的......
CMakeFiles.txt应该尽可能地不知道编译器......这允许你为不同的生成器创建同一个项目。跨度> -
我认为你不明白我的问题。你说:“
CMakeFiles.txt应该尽可能地不知道编译器......这允许你为不同的生成器使用同一个项目。”我不是在询问在项目级别上修改 CMake 的行为。我问的是如何在所有使用 CMake 的项目中更改我自己机器上的默认行为,而不影响其他机器上的行为。我没有提到CMakeFiles.txt。 -
创建别名?一个旧的 doskey 宏或者一个批处理文件 cmake.bat,它转发所有参数并首先注入生成器?