Как определить, выполняется ли сценарий CMake в среде MSYS2? - PullRequest
0 голосов
/ 22 марта 2020

Я хочу определить, вызывается ли CMakeLists.txt в среде / оболочке MSYS2:

$ uname
MSYS_NT-10.0-18363

из здесь Я пытался:

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()

, который возвращает одинаковый результат This is not MSYS как в Windows cmd, так и в оболочке MSYS2. Я на самом деле не удивлен, потому что MSYS2 и MSYS - два разных зверя! Также из здесь я пробовал:

message(${CMAKE_SYSTEM_NAME})

, который в cmd и MSYS2 возвращает Windows! Буду признателен, если вы поможете мне узнать, как я могу определить, выполняется ли команда cmake из оболочки MSYS2. Спасибо за вашу поддержку заранее.

PS1. В качестве личной заметки для себя это и это кажутся хорошими источниками для изучения.

PS2 Как ни странно, команда

message(${CMAKE_HOST_SYSTEM_NAME})

также возвращает Windows, в то время как на моем MSYS2, согласно docuemntation , она должна вернуть результат uname -s!

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Я думаю, что должен быть лучший ответ, но вы можете использовать вывод из uname, который вы представили:

execute_process(COMMAND uname OUTPUT_VARIABLE uname)
if (uname MATCHES "^MSYS")
0 голосов
/ 22 марта 2020

ОК, думаю, я знаю, откуда возникла проблема. Поскольку у меня также было другие проблемы ранее, 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

Одно предупреждение: теперь вам нужно указать путь к инструменту make с помощью -D CMAKE_MAKE_PROGRAM:path=mingw32-make

...