From 086ad7bc9ab0a79c05dd875a60914e60b7c1e378 Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Fri, 8 Jan 2021 13:02:30 +0100 Subject: [PATCH] CMake: Fix out of sync iOS/macOS deployment target The minimal sample doesn't have an implicit deployment target set, while the library does through CMakeLists.txt in root. This can result in iOS link errors when not explicitly setting CMAKE_OSX_DEPLOYMENT_TARGET as the sample will then use a target OS with an architecture that may not be present in the library with its current target OS version. Fix by copying the part setting CMAKE_OSX_DEPLOYMENT_TARGET in the library to the minimal sample as well. Both parts should be kept in sync but that still seemed preferable to additionally polluting an example file for CMake usage with a dependency by introducing a common include file. --- CMakeLists.txt | 2 ++ samples/minimal/CMakeLists.txt | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a78472a7cd..4063020552 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,8 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release") endif() +# This block, particularly the versions used, should be kept in sync with +# samples/minimal/CMakeLists.txt. if(APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET) # If no deployment target has been set default to the minimum supported # OS version (this has to be set before the first project() call) diff --git a/samples/minimal/CMakeLists.txt b/samples/minimal/CMakeLists.txt index 8f64044812..7e1333f4fe 100644 --- a/samples/minimal/CMakeLists.txt +++ b/samples/minimal/CMakeLists.txt @@ -16,6 +16,16 @@ # Declare the minimum required CMake version cmake_minimum_required(VERSION 2.8.12) +if(APPLE AND NOT CMAKE_OSX_DEPLOYMENT_TARGET) + # If no deployment target has been set default to the minimum supported + # OS version (this has to be set before the first project() call) + if(CMAKE_SYSTEM_NAME STREQUAL "iOS") + set(CMAKE_OSX_DEPLOYMENT_TARGET 12.0 CACHE STRING "iOS Deployment Target") + else() + set(CMAKE_OSX_DEPLOYMENT_TARGET 10.10 CACHE STRING "macOS Deployment Target") + endif() +endif() + # Name the project project(minimal)