Improve cmake script for macOS

Add default minimum target to 10.7.

The CMAKE_OSX_* variables need to be defined before the project or the
CMAKE_CXX_STANDARD gets ignored. They also need to be set with FORCE.
This commit is contained in:
Marco Antognini 2017-04-05 21:56:06 +02:00 committed by Lukas Dürrenberger
parent 49776092d1
commit 5a4b592bbc

View File

@ -21,6 +21,23 @@ if(NOT CMAKE_VERSION VERSION_LESS 3.0)
cmake_policy(SET CMP0042 NEW) cmake_policy(SET CMP0042 NEW)
endif() endif()
# add some default value for some additional macOS variable
# note that those variables are ignored on other systems
if(NOT CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "macOS architecture to build; 64-bit is expected" FORCE)
endif()
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.7" CACHE STRING "macOS deployement target; 10.7+ is expected" FORCE)
endif()
if(NOT CMAKE_OSX_SYSROOT)
# query the path to the default SDK, will fail on non-macOS, but it's okay.
execute_process(COMMAND xcodebuild -sdk macosx -version Path
COMMAND head -n 1
COMMAND tr -d '\n'
OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
ERROR_QUIET)
endif()
# set Android specific options # set Android specific options
# define the minimum API level to be used # define the minimum API level to be used
@ -247,9 +264,13 @@ if(SFML_OS_MACOSX)
endif() endif()
# only the default architecture (i.e. 64-bit) is supported # only the default architecture (i.e. 64-bit) is supported
if(CMAKE_OSX_ARCHITECTURES AND NOT CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64") if(NOT CMAKE_OSX_ARCHITECTURES STREQUAL "x86_64")
message(FATAL_ERROR "Only 64-bit architecture is supported") message(FATAL_ERROR "Only 64-bit architecture is supported")
return() endif()
# Ensure macOS 10.7+ is used
if(CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS "10.7")
message(FATAL_ERROR "macOS 10.7 or greater is required for the deployment target.")
endif() endif()
# configure Xcode templates # configure Xcode templates