Commit 9e6aabfd authored by Simon Hausmann's avatar Simon Hausmann Committed by Jani Heikkinen
Browse files

Prospective fix for cmake docs after -fPIC -> -fPIE changes


As a follow-up to qtbase commit 083c9269ed73e8771e1dbe10812696b45b7389f3, cmake
versions older than 2.8.12 require now the use of
Qt5<Module>_EXECUTABLE_COMPILE_FLAGS and the use of cmake's
POSITION_INDEPENDENT_CODE feature is not wanted anymore, as it adds -fPIE to
the build flags, which may override -fPIC and thus cause a build issue when
including qglobal.h.

Change-Id: I4dd6e2ea64f5d8ca8a87f874322bc1b1f8ff5392
Reviewed-by: default avatarStephen Kelly <steveire@gmail.com>
Showing with 8 additions and 40 deletions
......@@ -96,7 +96,13 @@
associated. They provide a list of plugins in the
\c{Qt5}\e{<Module>}\c{_PLUGINS} variable.
\snippet snippets/cmake/CMakeLists.pro 7
\snippet snippets/cmake/CMakeLists.pro 5
\section2 Using Qt 5 with \c{CMake} older than 2.8.12
It is also necessary when using an older \c{CMake} to add Qt5<Module>_EXECUTABLE_COMPILE_FLAGS to
the CMAKE_CXX_FLAGS so that the -fPIC flags are added to the compile flags if necessary (as
is the default with Qt 5).
\section2 Using Qt 5 with \c{CMake} older than 2.8.11
......@@ -124,24 +130,6 @@
\snippet snippets/cmake/CMakeLists.pro 4
It is also necessary when using an older \c{CMake} to add Qt5<Module>_EXECUTABLE_COMPILE_FLAGS to
the CMAKE_CXX_FLAGS so that the -fPIE flags are added to the compile flags if necessary (as
is the default with Qt 5).
If not using the \c{qt5_use_modules} macro, and if using CMake 2.8.9 or later, the
\l{CMake POSITION_INDEPENDENT_CODE Documentation}{POSITION_INDEPENDENT_CODE property} can be set on
targets using Qt instead, or it can be set globally for all targets. Note that this is not necessary
with CMake 2.8.11:
\snippet snippets/cmake/CMakeLists.pro 5
Note that it may be necessary to enable POSITION_INDEPENDENT_CODE globally in order to use try_compile
with Qt code, or any wrapper macros around it such as check_cxx_source_compiles etc.
As position independent code is a platform-specific and Qt-configuration-specific concept, the
Qt5_POSITION_INDEPENDENT_CODE property can be used to check whether it is required.
\snippet snippets/cmake/CMakeLists.pro 6
\section1 Variable Reference
\section2 Module variables
......
......@@ -73,28 +73,8 @@ target_link_libraries(helloworld Qt5::Widgets)
#! [4]
#! [5]
find_package(Qt5Core)
add_executable(exe1 ${exe1_SRCS})
# Set the POSITION_INDEPENDENT_CODE property for the exe1 target...
set_target_properties(exe1 PROPERTIES POSITION_INDEPENDENT_CODE ON)
# Or set it globally for all targets:
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
add_executable(exe2 ${exe2_SRCS})
add_executable(exe3 ${exe3_SRCS})
#! [5]
#! [6]
if (Qt5_POSITION_INDEPENDENT_CODE)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
endif()
#! [6]
#! [7]
foreach(plugin ${Qt5Network_PLUGINS})
get_target_property(_loc ${plugin} LOCATION)
message("Plugin ${plugin} is at location ${_loc}")
endforeach()
#! [7]
#! [5]
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment