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還定義了cmake_system_processor變數。前者包含當前執行的cpu在cmake的名稱,而後者將包含當前正在為其構建的cpu的名稱 物理處理器與邏輯處理器
記錄解決方案,自己實際處理過,方案可用,在自己的部落格中記錄一下。cpu central processing unit 是 處理單元,本文介紹物理cpu,物理cpu核心,邏輯cpu,以及他們三者之間的關係。乙個物理cpu可以有1個或者多個物理核心,乙個物理核心可以作為1個或者2個邏輯cpu。物理c...
CMakeLists檢測作業系統
cmakelists檢測作業系統 if cmake system name strequal linux message status configuring on for linux elseif cmake system name strequal darwin message status c...
處理器核心
處理器核心 cache 寫緩衝器 主存 輔助儲存器 寫操作,對核心而言非迫切,所以加乙個寫緩衝器很好。cache可放在處理器核心與mmu之間 邏輯 cache,主流 也可放在mmu與主存之間 物理 cache 對儲存器中相同或相鄰資料和 的反覆使用,是cache改善效能的主要原因。cache同時使用...