制作。根据体系结构定义项目语言 (CMAKE_SYSTEM_NAME)

cmake. define project languages according to architecture (CMAKE_SYSTEM_NAME)

我的项目定义需要根据体系结构(macOS 或 Windows)使用不同的语言集。

if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
    project(myProj CXX OBJC OBJCXX)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
    project(myProj)
endif()

但是,看起来 CMAKE_SYSTEM_NAME 只是在项目命令之后定义的。 就像在这个示例代码中一样,只有第二条消息会显示有效的 arch。

message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
project(myProj)
message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")

知道如何在定义项目之前获取 运行 arch 吗?

以下是您的意图:

project(myProj LANGUAGES NONE)

if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
  enable_language(CXX)
  enable_language(OBJC)
  enable_language(OBJCXX)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
  enable_language(C)
  enable_language(CXX)
endif()

当然,这不会在其他系统上配置任何语言,这可能不是您想要的...