You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.5 KiB
50 lines
1.5 KiB
cmake_minimum_required(VERSION 3.10)
|
|
project(Architecture C)
|
|
|
|
if (CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 12)
|
|
# Since Xcode 12 we have two architectures again: arm64 and x86_64.
|
|
set(arch0 x86_64)
|
|
set(arch1 arm64)
|
|
elseif(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 10)
|
|
# Xcode 10 / 11 do not have two supported architectures for the host.
|
|
message(STATUS "Skip test x86_64 only")
|
|
return()
|
|
elseif(CMake_TEST_XCODE_VERSION VERSION_GREATER_EQUAL 4)
|
|
# Xcode 4 no longer supports ppc, but does support x86_64.
|
|
set(arch0 i386)
|
|
set(arch1 x86_64)
|
|
else()
|
|
set(arch0 i386)
|
|
set(arch1 ppc)
|
|
endif()
|
|
|
|
add_library(foo foo.c)
|
|
if(CMAKE_OSX_ARCHITECTURES)
|
|
get_property(archs TARGET foo PROPERTY OSX_ARCHITECTURES)
|
|
if(NOT "${CMAKE_OSX_ARCHITECTURES}" STREQUAL "${archs}")
|
|
message(FATAL_ERROR
|
|
"OSX_ARCHITECTURES property not initialized by CMAKE_OSX_ARCHITECTURES.\n"
|
|
"Expected [${CMAKE_OSX_ARCHITECTURES}], got [${archs}]."
|
|
)
|
|
endif()
|
|
list(LENGTH archs archs_len)
|
|
if(archs_len GREATER 1)
|
|
list(GET archs 0 arch0)
|
|
list(GET archs 1 arch1)
|
|
endif()
|
|
endif()
|
|
|
|
message("archs='${archs}'")
|
|
message("arch0='${arch0}'")
|
|
message("arch1='${arch1}'")
|
|
|
|
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES ${arch0})
|
|
set_property(TARGET foo PROPERTY OSX_ARCHITECTURES_DEBUG ${arch1})
|
|
|
|
add_executable(bar bar.c)
|
|
target_link_libraries(bar foo)
|
|
|
|
set_property(TARGET bar PROPERTY OUTPUT_NAME Architecture)
|
|
set_property(TARGET bar PROPERTY OSX_ARCHITECTURES ${arch1})
|
|
set_property(TARGET bar PROPERTY OSX_ARCHITECTURES_DEBUG ${arch0})
|