c++ 代码判断CPU 架构, *** 作系统类型,cmake 中判断CPU 架构, *** 作系统类型

c++ 代码判断CPU 架构, *** 作系统类型,cmake 中判断CPU 架构, *** 作系统类型,第1张

c++ 代码判断CPU 架构, *** 作系统类型,cmake 中判断CPU 架构, *** 作系统类型

在c++代码中,我们可以利用,系统或者编译器的宏定义来判断 *** 作系统类型,cpu架构,这在跨平台程序中经常用到。

c++代码中判断
#include
  
int main(){
#if defined __linux__
    std::cout<<"linux system"< 

输出:

CMAKE 中判断 *** 作系统类型和 cpu 架构:

 需要利用 cmake中的变量来判断。

CMAKE_HOST_SYSTEM_NAME: *** 作系统类型

CMAKE_HOST_SYSTEM_PROCESSOR:cpu 指令集

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10.0)

message(${CMAKE_HOST_SYSTEM_NAME})
message(${CMAKE_HOST_SYSTEM_PROCESSOR})

if(CMAKE_HOST_SYSTEM_NAME MATCHES "Linux")
    message("this is Linux")
elseif(CMAKE_HOST_SYSTEM_NAME MATCHES "Android")
	message("this is Android")
endif()
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64")
    message("this is aarch64 cpu")
elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
	message("this is x86_64 cpu")
endif()

执行结果:

常用宏定义: 

*** 作系统预定义宏:

*** 作系统公共定义64位系统定义Windows_WIN32_WIN64macOS__APPLE____LP64__Linux__linux____LP64__Android__ANDROID____LP64__

编译器预定义宏:

编译器编译器定义x86指令集AMD64指令集ARM32指令集Thumb指令集ARM64指令集MSVC_MSC_VER_M_IX86_M_X64_M_ARM_M_THUMB_M_ARM64GCC__GNUC____i386____x86_64____arm____thumb____aarch64__Clang__clang____i386____x86_64____arm____thumb____aarch64__

参考: *** 作系统和编译器预定义宏 – virbox 技术博客

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5691016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存