cmake 如何判断不同操作系统平台主要注意两个方面:
1、区分操作系统上下文
2、linux/macos 使用路径 /; windows 文件路径需要使用 \\ ,第一个 \ 是转义字符,第二个 \ 是 windows的路径
IF ((CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") OR (CMAKE_HOST_SYSTEM_NAME MATCHES "Linux"))
execute_process(
COMMAND cp dir_a/a.c dir_b/b.c
)
ELSEIF (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
execute_process(
COMMAND cmd.exe /C copy /y dir_a\\a.c dai_b\\b.c
)
ENDIF ()
另外 cmake 还有一个函数 file(TO_NATIVE_PATH <path> <out-var>),下面是一个例子:
其中 ${PROJECT_DIR} 在不同操作系统环境下是不一样的(linux/macos 使用 / 而 windows 使用 \)
file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} PROJECT_DIR)
IF ((CMAKE_HOST_SYSTEM_NAME MATCHES "Darwin") OR (CMAKE_HOST_SYSTEM_NAME MATCHES "Linux"))
execute_process(
COMMAND cp ${PROJECT_DIR}/a.c ${PROJECT_DIR}/b.c
)
ELSEIF (CMAKE_HOST_SYSTEM_NAME MATCHES "Windows")
execute_process(
COMMAND cmd.exe /C copy /y ${PROJECT_DIR}\\a.c ${PROJECT_DIR}\\b.c
)
ENDIF ()
网友评论