重命名操作系统检测宏前缀为 piko,更新相关逻辑以支持新的命名约定
This commit is contained in:
@@ -10,62 +10,62 @@ function(add_os_definitions target)
|
||||
# --- 阶段 1: 确定宏的值 ---
|
||||
|
||||
# 初始化所有平台、架构和特性宏的值为 0
|
||||
set(mirage_def_windows 0)
|
||||
set(mirage_def_macos 0)
|
||||
set(mirage_def_linux 0)
|
||||
set(mirage_def_freebsd 0)
|
||||
set(mirage_def_ios 0)
|
||||
set(mirage_def_android 0)
|
||||
set(mirage_def_cygwin 0)
|
||||
set(mirage_def_unix 0)
|
||||
set(mirage_def_posix 0)
|
||||
set(mirage_def_mobile 0)
|
||||
set(mirage_def_arch_64bit 0)
|
||||
set(mirage_def_arch_32bit 0)
|
||||
set(piko_def_windows 0)
|
||||
set(piko_def_macos 0)
|
||||
set(piko_def_linux 0)
|
||||
set(piko_def_freebsd 0)
|
||||
set(piko_def_ios 0)
|
||||
set(piko_def_android 0)
|
||||
set(piko_def_cygwin 0)
|
||||
set(piko_def_unix 0)
|
||||
set(piko_def_posix 0)
|
||||
set(piko_def_mobile 0)
|
||||
set(piko_def_arch_64bit 0)
|
||||
set(piko_def_arch_32bit 0)
|
||||
|
||||
# -- 操作系统检测与赋值 --
|
||||
# 注意检测顺序:优先检测更具体的平台
|
||||
if(CYGWIN)
|
||||
# Cygwin 环境比较特殊,它在 Windows 上模拟 Unix
|
||||
set(mirage_def_windows 1) # 基础是 Windows
|
||||
set(mirage_def_cygwin 1) # 明确是 Cygwin
|
||||
set(mirage_def_unix 1) # 提供 Unix API
|
||||
set(mirage_def_posix 1) # 提供 POSIX API
|
||||
set(piko_def_windows 1) # 基础是 Windows
|
||||
set(piko_def_cygwin 1) # 明确是 Cygwin
|
||||
set(piko_def_unix 1) # 提供 Unix API
|
||||
set(piko_def_posix 1) # 提供 POSIX API
|
||||
message(STATUS "检测到 **Cygwin** 环境 (运行于 Windows)")
|
||||
elseif(WIN32)
|
||||
# 非 Cygwin 的 Windows 环境 (MSVC, MinGW, etc.)
|
||||
set(mirage_def_windows 1)
|
||||
set(piko_def_windows 1)
|
||||
message(STATUS "检测到 **Windows** 操作系统 (非 Cygwin)")
|
||||
elseif(ANDROID)
|
||||
# Android 平台 (通常需要特定工具链设置 ANDROID 变量)
|
||||
set(mirage_def_android 1)
|
||||
set(mirage_def_unix 1) # Android NDK 基于 Unix
|
||||
set(mirage_def_posix 1) # NDK 提供 POSIX API
|
||||
set(mirage_def_mobile 1) # 移动平台
|
||||
set(piko_def_android 1)
|
||||
set(piko_def_unix 1) # Android NDK 基于 Unix
|
||||
set(piko_def_posix 1) # NDK 提供 POSIX API
|
||||
set(piko_def_mobile 1) # 移动平台
|
||||
message(STATUS "检测到 **Android** 操作系统")
|
||||
elseif(IOS)
|
||||
# iOS 平台 (通常需要特定工具链设置 IOS 变量)
|
||||
# 需要在 APPLE 之前判断,因为 iOS 下 APPLE 也为 TRUE
|
||||
set(mirage_def_ios 1)
|
||||
set(mirage_def_unix 1) # iOS (Darwin) 基于 Unix
|
||||
set(mirage_def_posix 1) # 提供 POSIX API
|
||||
set(mirage_def_mobile 1) # 移动平台
|
||||
set(piko_def_ios 1)
|
||||
set(piko_def_unix 1) # iOS (Darwin) 基于 Unix
|
||||
set(piko_def_posix 1) # 提供 POSIX API
|
||||
set(piko_def_mobile 1) # 移动平台
|
||||
message(STATUS "检测到 **iOS** 操作系统")
|
||||
elseif(APPLE)
|
||||
# 此时排除了 iOS,确定是 macOS
|
||||
set(mirage_def_macos 1)
|
||||
set(mirage_def_unix 1) # macOS (Darwin) 基于 Unix
|
||||
set(mirage_def_posix 1) # 提供 POSIX API
|
||||
set(piko_def_macos 1)
|
||||
set(piko_def_unix 1) # macOS (Darwin) 基于 Unix
|
||||
set(piko_def_posix 1) # 提供 POSIX API
|
||||
message(STATUS "检测到 **macOS** 操作系统")
|
||||
elseif(UNIX)
|
||||
# 此时排除了 Apple, Android, Cygwin 的其他 Unix-like 系统
|
||||
set(mirage_def_unix 1)
|
||||
set(mirage_def_posix 1)
|
||||
set(piko_def_unix 1)
|
||||
set(piko_def_posix 1)
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
set(mirage_def_linux 1)
|
||||
set(piko_def_linux 1)
|
||||
message(STATUS "检测到 **Linux** 操作系统")
|
||||
elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
|
||||
set(mirage_def_freebsd 1)
|
||||
set(piko_def_freebsd 1)
|
||||
message(STATUS "检测到 **FreeBSD** 操作系统")
|
||||
else()
|
||||
message(WARNING "检测到未知的 类Unix 操作系统: ${CMAKE_SYSTEM_NAME}")
|
||||
@@ -76,12 +76,12 @@ function(add_os_definitions target)
|
||||
|
||||
# -- 架构检测与赋值 --
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(mirage_def_arch_64bit 1)
|
||||
set(mirage_def_arch_32bit 0) # 明确设置为 0
|
||||
set(piko_def_arch_64bit 1)
|
||||
set(piko_def_arch_32bit 0) # 明确设置为 0
|
||||
message(STATUS "检测到 **64-bit** 架构")
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(mirage_def_arch_64bit 0) # 明确设置为 0
|
||||
set(mirage_def_arch_32bit 1)
|
||||
set(piko_def_arch_64bit 0) # 明确设置为 0
|
||||
set(piko_def_arch_32bit 1)
|
||||
message(STATUS "检测到 **32-bit** 架构")
|
||||
else()
|
||||
# 对于未知或未定义的指针大小,两者都保持 0
|
||||
@@ -92,22 +92,22 @@ function(add_os_definitions target)
|
||||
set(definitions_list "") # 初始化空列表
|
||||
|
||||
# 添加平台定义
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_WINDOWS=${mirage_def_windows}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_MACOS=${mirage_def_macos}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_LINUX=${mirage_def_linux}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_FREEBSD=${mirage_def_freebsd}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_IOS=${mirage_def_ios}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_ANDROID=${mirage_def_android}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_CYGWIN=${mirage_def_cygwin}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_WINDOWS=${piko_def_windows}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_MACOS=${piko_def_macos}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_LINUX=${piko_def_linux}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_FREEBSD=${piko_def_freebsd}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_IOS=${piko_def_ios}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_ANDROID=${piko_def_android}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_CYGWIN=${piko_def_cygwin}")
|
||||
|
||||
# 添加架构定义
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_ARCH_64BIT=${mirage_def_arch_64bit}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_ARCH_32BIT=${mirage_def_arch_32bit}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_ARCH_64BIT=${piko_def_arch_64bit}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_ARCH_32BIT=${piko_def_arch_32bit}")
|
||||
|
||||
# 添加特性定义
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_UNIX=${mirage_def_unix}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_POSIX=${mirage_def_posix}")
|
||||
list(APPEND definitions_list "MIRAGE_PLATFORM_IS_MOBILE=${mirage_def_mobile}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_UNIX=${piko_def_unix}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_POSIX=${piko_def_posix}")
|
||||
list(APPEND definitions_list "PIKO_PLATFORM_IS_MOBILE=${piko_def_mobile}")
|
||||
|
||||
# --- 阶段 3: 应用所有定义 ---
|
||||
# **关键:使用一次调用将所有定义添加到目标**
|
||||
@@ -115,7 +115,7 @@ function(add_os_definitions target)
|
||||
target_compile_definitions(${target} PUBLIC ${definitions_list})
|
||||
endif()
|
||||
|
||||
# 函数作用域结束时,mirage_def_* 变量会自动销毁,无需显式 unset
|
||||
# 函数作用域结束时,piko_def_* 变量会自动销毁,无需显式 unset
|
||||
|
||||
endfunction()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user