if (WIN32)
if (USE_CUDA)
set(ONNXRUNTIME_ROOT "{CMAKE_CURRENT_SOURCE_DIR}/onnxruntime-win-x64-gpu-{ONNXRUNTIME_VERSION}")
else ()
set(ONNXRUNTIME_ROOT "{CMAKE_CURRENT_SOURCE_DIR}/onnxruntime-win-x64-{ONNXRUNTIME_VERSION}")
endif ()
elseif (LINUX)
if (USE_CUDA)
set(ONNXRUNTIME_ROOT "{CMAKE_CURRENT_SOURCE_DIR}/onnxruntime-linux-x64-gpu-{ONNXRUNTIME_VERSION}")
else ()
set(ONNXRUNTIME_ROOT "{CMAKE_CURRENT_SOURCE_DIR}/onnxruntime-linux-x64-{ONNXRUNTIME_VERSION}")
endif ()
- 以上代码中
if (
WIN32)
:匹配 Windows 系统(含 32/64 位,WIN32 为 Windows API 标识,兼容 64 位);lseif (LINUX)
:匹配 Linux 系统(x64 架构)。- 在深度学习相关文件 / 开发中,"WIN32" 通常是Windows 操作系统的一种 API 接口标识 ,并非仅指代 32 位系统,其包含对 64 位 Windows 系统的兼容支持(64 位系统中对应 "WIN32 on WOW64" 或直接通过 Win64 API 扩展)。
- 名称中的 "32" 源于早期 32 位 Windows 系统,但现代 64 位 Windows 仍保留 WIN32 API 作为基础接口,多数深度学习框架(如 PyTorch、TensorFlow)的 Windows 版本会通过 WIN32 API 适配系统资源(如文件操作、进程管理),同时支持 64 位指令集与内存访问。
- 若需明确区分 64 位特定代码,会使用 "WIN64" 标识,但 WIN32 接口在 64 位系统中仍可正常工作,确保向下兼容。
- 在 64 位 Windows 系统中,WIN32 on WOW64是常见场景,指 32 位的 WIN32 应用程序通过 WOW64(Windows 32-bit on Windows 64-bit)子系统在 64 位系统上运行