【发布时间】:2020-10-14 14:26:15
【问题描述】:
我正在 cmake 中编写一个实用宏来设置依赖于平台的变量。理论上它应该很简单,但我不知道为什么我的变量没有被设置。这是宏:
macro(SetCrossPlatform name msvc_val linux_val macos_val)
#macro(SetCrossPlatform VAR name MSVC msvc_val LINUX linux_val MACOS macos_val) # alternative signature that I tried
MESSAGE(STATUS "PLATFORM ${PLATFORM}")
if (PLATFORM STREQUAL "windows-msvc")
set(name ${msvc_val})
elseif (PLATFORM STREQUAL "linux")
set(name ${linux_val})
elseif (PLATFORM STREQUAL "macos")
set(name ${macos_val})
endif ()
endmacro()
调用如下:
#SetCrossPlatform(VAR Variable MSVC "microsoft" LINUX "ubuntu" MACOS "apple") # try other signature
SetCrossPlatform(Variable "microsoft" "ubuntu" "apple")
message(STATUS "Variable ${Variable}")
这会产生:
-- PLATFORM windows-msvc
-- Variable # <--- Should print out "-- Variable microsoft"
-- Configuring done
-- Generating done
有人知道我做错了什么吗?
【问题讨论】:
标签: cmake macros cross-platform