CMake: Automatically use Xcode generator in qt-cmake + iOS
When calling qt-cmake on the command line, we don't usually force usage of a particular CMake generator and defer to the user's choice or CMake's default for the host OS. In the case of iOS, the generator that makes the most sense to use is Xcode. One could also use Ninja / Unix Makefiles if the project is only building static libraries, but for shared libraries and executables the project likely needs the code signing provided by xcodebuild. When targeting iOS, use a different qt-cmake file template. The iOS-specific shell script will set the CMAKE_GENERATOR environment variable to 'Xcode'. If no -G or -D CMAKE_GENERATOR is provided on the command line then the project will use the Xcode generator. Otherwise the generator given on the command line takes precedence. The CMAKE_GENERATOR environment variable from the parent process is completely ignored. The logic is only done for iOS, to reduce the likeliness of breaking the qt-cmake script for other platforms. Note that Qt Creator does not use qt-cmake, but rather calls cmake directly with additional options like the toolchain file, architecture, sysroot, etc. [ChangeLog][iOS][CMake] qt-cmake now defaults to using the Xcode generator when targeting iOS projects. Pick-to: 6.2 6.3 Fixes: QTBUG-100834 Change-Id: I39b3dce47cc9ee2f98678631e4bd035c59c65294 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
parent
da4957c99b
commit
a3917126e8
22
bin/qt-cmake.ios.in
Executable file
22
bin/qt-cmake.ios.in
Executable file
@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
|
||||
# The directory of this script is the expanded absolute path of the "$qt_prefix/bin" directory.
|
||||
script_dir_path=`dirname $0`
|
||||
script_dir_path=`(cd "$script_dir_path"; /bin/pwd)`
|
||||
|
||||
# Try to use original cmake, otherwise to make it relocatable, use any cmake found in PATH.
|
||||
original_cmake_path="@CMAKE_COMMAND@"
|
||||
cmake_path=$original_cmake_path
|
||||
if ! test -f "$cmake_path"; then
|
||||
cmake_path="cmake"
|
||||
fi
|
||||
|
||||
# Find the qt toolchain relative to the absolute bin dir path where the script is located.
|
||||
toolchain_path="$script_dir_path/@__GlobalConfig_relative_path_from_bin_dir_to_cmake_config_dir@/qt.toolchain.cmake"
|
||||
|
||||
# Specify Xcode as the default generator by assigning it to the CMAKE_GENERATOR env var.
|
||||
# An explicit -G or -D CMAKE_GENERATOR given on the command line will still take precedence.
|
||||
export CMAKE_GENERATOR=Xcode
|
||||
|
||||
# Run cmake.
|
||||
exec "$cmake_path" -DCMAKE_TOOLCHAIN_FILE="$toolchain_path" @__qt_cmake_extra@ "$@"
|
@ -17,9 +17,14 @@ function(qt_internal_create_wrapper_scripts)
|
||||
endif()
|
||||
|
||||
if(generate_unix)
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bin/qt-cmake.in"
|
||||
if(IOS)
|
||||
set(infix ".ios")
|
||||
else()
|
||||
set(infix "")
|
||||
endif()
|
||||
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bin/qt-cmake${infix}.in"
|
||||
"${QT_BUILD_DIR}/${INSTALL_BINDIR}/qt-cmake" @ONLY
|
||||
NEWLINE_STYLE LF)
|
||||
NEWLINE_STYLE LF)
|
||||
qt_install(PROGRAMS "${QT_BUILD_DIR}/${INSTALL_BINDIR}/qt-cmake"
|
||||
DESTINATION "${INSTALL_BINDIR}")
|
||||
endif()
|
||||
|
Loading…
Reference in New Issue
Block a user