如何检测是否在MSYS2环境中运行CMake脚本?

问题描述 投票:0回答:2

我想检测是否在MSYS2环境/ shell中召唤了CMakeLists.txt

$ uname
MSYS_NT-10.0-18363

here我尝试过:

cmake_minimum_required(VERSION 3.10)

project(test_cmake)

if(MSYS) # yes I have also tried MSYS2 with the same result!
    message("This is MSYS")
else()
    message("This is not MSYS")
endif()

在Windows cmd和MSYS2 Shell中都返回相同的结果This is not MSYS。我实际上并不感到惊讶,因为MSYS2和MSYS是两种不同的野兽!同样从here开始,我尝试了:

message(${CMAKE_SYSTEM_NAME})

在cmd和MSYS2中都返回Windows!如果您能帮助我知道如何从MSYS2 shell内部运行cmake命令,我将不胜感激。感谢您的提前支持。

P.S.1。作为我自己的个人笔记,thisthis似乎是值得研究的好资料。

P.S.2足够奇怪的命令

message(${CMAKE_HOST_SYSTEM_NAME})

在我的MSYS2上也返回Windows,根据the docuemntation,它必须返回uname -s的结果!

cmake msys2
2个回答
1
投票

我认为应该有一个更好的答案,但是您可以使用显示的uname中的输出:

execute_process(COMMAND uname OUTPUT_VARIABLE uname)
if (uname MATCHES "^MSYS")

0
投票

好的,我想我知道问题出在哪里。正如我之前也有other issues一样,mingw64/mingw-w64-x86_64-cmake导致了此问题。因此,我将其卸载并安装了msys/cmake软件包。现在:

  • if(MSYS)重新运行TRUE
  • message(${CMAKE_SYSTEM_NAME})-> MSYS
  • message(${CMAKE_SYSTEM})-> MSYS-3.0.7-338.x86_64
  • message(${CMAKE_HOST_SYSTEM_NAME})-> MSYS

一个警告是,现在您必须通过-D CMAKE_MAKE_PROGRAM:path=mingw32-make指定到制作工具的路径>

© www.soinside.com 2019 - 2024. All rights reserved.