一、CMake文档
1、CMake管网
2、CMake在线帮助文档
CMake Reference Documentation — CMake 3.25.0-rc3 Documentation
3、CMake中的Variables that Describe the System
Cmake本身提供了很多变量来判断当前的系统环境,如下
cmake-variables(7) — CMake 3.25.0-rc3 Documentation

4、输出查看相关变量的值
message("CMAKE_HOST_SYSTEM_NAME: ${CMAKE_HOST_SYSTEM_NAME} ")
message("CMAKE_HOST_SYSTEM: ${CMAKE_HOST_SYSTEM} ")
message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME} ")
message("CMAKE_SYSTEM: ${CMAKE_SYSTEM} ")
message("CMAKE_HOST_UNIX: ${CMAKE_HOST_UNIX} ")
message("CMAKE_HOST_WIN32: ${CMAKE_HOST_WIN32} ")
5、CMake自带变量在Linux和Windows平台中的值如下
在 Linux 平台
CMAKE_HOST_SYSTEM_NAME = "Linux"
CMAKE_HOST_UNIX = 1
CMAKE_HOST_WIN32 = 空
UNIX = 1
WIN32 = 空
在 Windows 平台
CMAKE_HOST_SYSTEM_NAME = "Windows"
CMAKE_HOST_UNIX = 空
CMAKE_HOST_WIN32 = 1
UNIX = 空
WIN32 = 1
二、 区分不同平台
1、使用 CMAKE_HOST_SYSTEM_NAME 判断字符串
if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux")
message("current platform: Linux ")
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
message("current platform: Windows ")
else()
message("current platform: unkonw ")
endif()
2、使用 CMAKE_HOST_UNIX 和 CMAKE_HOST_WIN32 判断布尔值
if(CMAKE_HOST_UNIX)
message("current platform: Linux ")
elseif(CMAKE_HOST_WIN32)
message("current platform: Windows ")
else()
message("current platform: unkonw ")
endif()
3、使用 UNIX 和 WIN32 判断布尔值
if(UNIX)
message("current platform: Linux ")
elseif(WIN32)
message("current platform: Windows ")
else()
message("current platform: unkonw ")
endif()
4、32位与64位判断
if(CMAKE_CL_64)
set(CURRENT_PLATFORM "x64")
message(STATUS "Current Platform is ${CURRENT_PLATFORM}")
else(CMAKE_CL_64)
set(CURRENT_PLATFORM "x86")
message(STATUS "Current Platform is ${CURRENT_PLATFORM}")
endif(CMAKE_CL_64)
if(CMAKE_CROSSCOMPILING)
message(STATUS "Cross Comliling!!!, ARM")
set(CURRENT_SYSTEM "Arm")
else()
message(STATUS "No Cross Comliling!!!")
#根据不同平台给CURRENT_SYSTEM命名
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
set(CURRENT_SYSTEM "Linux")
elseif(CMAKE_SYSTEM_NAME MATCHES "Windows")
set(CURRENT_SYSTEM "Windows")
elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
set(CURRENT_SYSTEM "FreeBSD")
endif()
endif()
参考:跨平台CMake判断当前平台是Linux还是Windows_难搞哦~的博客-CSDN博客_cmake 判断平台
Original: https://blog.csdn.net/weixin_43782998/article/details/127732244
Author: 寞水
Title: C/C++、Qt开发,跨平台CMake判断当前平台是Linux还是Windows,操作系统判断
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/652581/
转载文章受原作者版权保护。转载请注明原作者出处!