CmakeLists检测处理器体系结构

CMake的CMAKE_SIZEOF_VOID_P变量会告诉我们CPU是32位还是64位。我们通过状态消息让用户知道检测到的大小,并设置预处理器定义:

    if(CMAKE_SIZEOF_VOID_P EQUAL 8)
      target_compile_definitions(arch-dependent PUBLIC "IS_64_BIT_ARCH")
      message(STATUS "Target is 64 bits")
    else()
      target_compile_definitions(arch-dependent PUBLIC "IS_32_BIT_ARCH")
      message(STATUS "Target is 32 bits")
    endif()

使用CMAKE_SIZEOF_VOID_P是检查当前CPU是否具有32位或64位架构的唯一“真正”可移植的方法。

预处理器了解主机处理器架构:

    if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i386")
        message(STATUS "i386 architecture detected")
    elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "i686")
        message(STATUS "i686 architecture detected")
    elseif(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "x86_64")
        message(STATUS "x86_64 architecture detected")
    else()
        message(STATUS "host processor architecture is unknown")
    endif()
    target_compile_definitions(arch-dependent
      PUBLIC "ARCHITECTURE=${CMAKE_HOST_SYSTEM_PROCESSOR}"
      )

除了CMAKE_HOST_SYSTEM_PROCESSOR, CMake还定义了CMAKE_SYSTEM_PROCESSOR变量。前者包含当前运行的CPU在CMake的名称,而后者将包含当前正在为其构建的CPU的名称

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值