我想检测CMakeLists.txt
MSYS2 环境/shell 中是否正在调用:
$ uname
MSYS_NT-10.0-18363
Run Code Online (Sandbox Code Playgroud)
从这里我尝试过:
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()
Run Code Online (Sandbox Code Playgroud)
This is not MSYS
它在 Windows cmd 和 MSYS2 shell 中返回相同的结果。我其实并不感到惊讶,因为 MSYS2 和 MSYS 是两种不同的野兽!同样从这里,我尝试过:
message(${CMAKE_SYSTEM_NAME})
Run Code Online (Sandbox Code Playgroud)
在 cmd 和 MSYS2 中都会返回Windows
!如果您能帮助我了解如何检测该cmake
命令是否是从 MSYS2 shell 内部运行的,我将不胜感激。感谢您提前的支持。
PS1。作为我个人的注释,这个和这个似乎是值得研究的好资料。
PS2奇怪的是命令
message(${CMAKE_HOST_SYSTEM_NAME})
Run Code Online (Sandbox Code Playgroud)
在我的 MSYS2 上也返回Windows
,根据文档,它必须返回uname -s
!
我认为应该有一个更好的答案,但您可以使用您提供的输出uname
:
execute_process(COMMAND uname OUTPUT_VARIABLE uname)
if (uname MATCHES "^MSYS")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2461 次 |
最近记录: |