2019-04-16 14:32:08 +00:00
|
|
|
# Generated from qmake.pro.
|
|
|
|
|
Implement developer / non-prefix builds
A non-prefix build is a build where you don't have to run
make install.
To do a non-prefix build, pass -DFEATURE_developer_build=ON when
invoking CMake on qtbase. Note that this of course also enables
developer build features (private tests, etc).
When doing a non-prefix build, the CMAKE_INSTALL_PREFIX cache variable
will point to the qtbase build directory.
Tests can be run without installing Qt (QPA plugins are picked up from
the build dir).
This patch stops installation of any files by forcing the
make "install" target be a no-op.
When invoking cmake on the qtsvg module (or any other module),
the CMAKE_INSTALL_PREFIX variable should be set to the qtbase build
directory.
The developer-build feature is propagated via the QtCore Config file,
so that when building other modules, you don't have to specify it
on the command line again.
As a result of the change, all libraries, plugins, tools, include dirs,
CMake Config files, CMake Targets files, Macro files, etc,
will be placed in the qtbase build directory, mimicking the file layout
of an installed Qt file layout.
Only examples and tests are kept in the separate module build
directories, which is equivalent to how qmake does it.
The following global variables contain paths for the
appropriate prefix or non prefix builds:
QT_BUILD_DIR, QT_INSTALL_DIR, QT_CONFIG_BUILD_DIR,
QT_CONFIG_INSTALL_DIR. These should be used by developers
when deciding where files should be placed.
All usages of install() are replaced by qt_install(), which has some
additional logic on how to handle associationg of CMake targets to
export names.
When installing files, some consideration should be taken if
qt_copy_or_install() needs to be used instead of qt_install(),
which takes care of copying files from the source dir to the build dir
when doing non-prefix builds.
Tested with qtbase and qtsvg, developer builds, non-developer builds
and static developer builds on Windows, Linux and macOS.
Task-number: QTBUG-75581
Change-Id: I0ed27fb6467662dd24fb23aee6b95dd2c9c4061f
Reviewed-by: Kevin Funk <kevin.funk@kdab.com>
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-05-08 12:45:41 +00:00
|
|
|
# special case begin
|
|
|
|
set(path_component "${INSTALL_DATADIR}")
|
|
|
|
qt_path_join(mkspecs_install_dir ${QT_INSTALL_DIR} ${path_component})
|
|
|
|
|
|
|
|
qt_copy_or_install(DIRECTORY "${PROJECT_SOURCE_DIR}/mkspecs"
|
|
|
|
DESTINATION ${mkspecs_install_dir})
|
|
|
|
# special case end
|
2019-02-12 13:44:56 +00:00
|
|
|
|
2019-04-16 14:32:08 +00:00
|
|
|
#####################################################################
|
|
|
|
## qmake Binary:
|
|
|
|
#####################################################################
|
2019-02-27 12:52:57 +00:00
|
|
|
|
2019-04-16 14:32:08 +00:00
|
|
|
add_qt_tool(qmake # special case
|
2019-04-29 11:14:22 +00:00
|
|
|
NO_QT # special case
|
Export tool config and target files for each relevant module
CMake will now generate config and target files for each module that
provides tools. As a result, namespaced global targets such as
Qt5::moc or Qt5::rcc can be made available.
Third party projects that require just these tools, and not the Qt
modules themselves, should specify CMAKE_PREFIX_PATH pointing to the
installed Qt location, and call find_package(Qt5CoreTools),
find_package(Qt5GuiTools), etc.
It is also possible to call
find_package(Qt5Tools REQUIRED Core Widgets) where the last option
is a list of modules whose tools should be imported.
Note that all the tools are in the Qt5::
namespace and not in the Qt5CoreTools:: or Qt5WidgetsTools::
namespace.
This commit also changes the behavior regarding when to build tools
while building Qt itself.
When cross compiling Qt (checked via CMAKE_CROSSCOMPILING) or when
-DQT_FORCE_FIND_TOOLS=TRUE is passed, tools added by add_qt_tool will
always be searched for and not built.
In this case the user has to specify the CMake variable QT_HOST_PATH
pointing to an installed host Qt location.
When not cross compiling, tools added by add_qt_tool are built from
source.
When building leaf modules (like qtsvg) that require some tool that was
built in qtbase (like moc), the module project should contain a
find_package(Qt5ToolsCore) call and specify an appropriate
CMAKE_PREFIX_PATH so that the tool package is found.
Note that because HOST_QT_TOOLS_DIRECTORY was replaced by QT_HOST_PATH,
the ensure syncqt code was changed to make it work properly with
both qtbase and qtsvg.
Here's a list of tools and their module associations:
qmake, moc, rcc, tracegen, qfloat16-tables, qlalr -> CoreTools
qvkgen -> GuiTools
uic -> WidgetTools
dbus related tools -> DBusTools
Task-number: QTBUG-74134
Change-Id: Ie67d1e2f8de46102b48eca008f0b50caf4fbe3ed
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
2019-04-10 17:21:22 +00:00
|
|
|
TOOLS_TARGET Core # special case
|
2019-04-16 14:32:08 +00:00
|
|
|
# GUI # special case: remove this
|
2019-02-12 13:44:56 +00:00
|
|
|
SOURCES
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/codecs/qutfcodec.cpp ../src/corelib/codecs/qutfcodec_p.h
|
2019-04-29 14:53:27 +00:00
|
|
|
../src/corelib/global/qendian.cpp # special case
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/global/qglobal.cpp ../src/corelib/global/qglobal.h
|
|
|
|
../src/corelib/global/qlibraryinfo.cpp
|
|
|
|
../src/corelib/global/qlogging.cpp
|
|
|
|
../src/corelib/global/qmalloc.cpp
|
|
|
|
../src/corelib/global/qnumeric.cpp ../src/corelib/global/qnumeric.h
|
2019-04-29 14:53:27 +00:00
|
|
|
../src/corelib/global/qoperatingsystemversion.cpp # special case
|
|
|
|
../src/corelib/global/qrandom.cpp # special case
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/io/qabstractfileengine.cpp ../src/corelib/io/qabstractfileengine_p.h
|
|
|
|
../src/corelib/io/qbuffer.cpp ../src/corelib/io/qbuffer.h
|
2019-04-29 14:53:27 +00:00
|
|
|
../src/corelib/io/qdebug.cpp # special case
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/io/qdir.cpp ../src/corelib/io/qdir.h ../src/corelib/io/qdir_p.h
|
|
|
|
../src/corelib/io/qdiriterator.cpp ../src/corelib/io/qdiriterator.h
|
|
|
|
../src/corelib/io/qfile.cpp ../src/corelib/io/qfile.h
|
|
|
|
../src/corelib/io/qfiledevice.cpp
|
|
|
|
../src/corelib/io/qfileinfo.cpp ../src/corelib/io/qfileinfo.h
|
|
|
|
../src/corelib/io/qfilesystemengine.cpp
|
|
|
|
../src/corelib/io/qfilesystementry.cpp
|
|
|
|
../src/corelib/io/qfsfileengine.cpp
|
|
|
|
../src/corelib/io/qfsfileengine_iterator.cpp
|
|
|
|
../src/corelib/io/qiodevice.cpp ../src/corelib/io/qiodevice.h
|
|
|
|
../src/corelib/io/qsettings.cpp
|
|
|
|
../src/corelib/io/qtemporaryfile.cpp ../src/corelib/io/qtemporaryfile.h
|
|
|
|
../src/corelib/kernel/qmetatype.cpp ../src/corelib/kernel/qmetatype.h
|
|
|
|
../src/corelib/kernel/qsystemerror.cpp ../src/corelib/kernel/qsystemerror_p.h
|
|
|
|
../src/corelib/kernel/qvariant.cpp
|
|
|
|
../src/corelib/plugin/quuid.cpp ../src/corelib/plugin/quuid.h
|
|
|
|
../src/corelib/serialization/qjson.cpp ../src/corelib/serialization/qjson_p.h
|
|
|
|
../src/corelib/serialization/qjsonarray.cpp ../src/corelib/serialization/qjsonarray.h
|
|
|
|
../src/corelib/serialization/qjsondocument.cpp ../src/corelib/serialization/qjsondocument.h
|
|
|
|
../src/corelib/serialization/qjsonobject.cpp ../src/corelib/serialization/qjsonobject.h
|
|
|
|
../src/corelib/serialization/qjsonparser.cpp ../src/corelib/serialization/qjsonparser_p.h
|
|
|
|
../src/corelib/serialization/qjsonvalue.cpp ../src/corelib/serialization/qjsonvalue.h
|
|
|
|
../src/corelib/serialization/qjsonwriter_p.h
|
|
|
|
../src/corelib/serialization/qtextstream.cpp ../src/corelib/serialization/qtextstream.h
|
|
|
|
../src/corelib/serialization/qxmlstream.cpp ../src/corelib/serialization/qxmlstream.h
|
|
|
|
../src/corelib/serialization/qxmlutils.cpp ../src/corelib/serialization/qxmlutils_p.h
|
|
|
|
../src/corelib/tools/qarraydata.cpp ../src/corelib/tools/qarraydata.h
|
|
|
|
../src/corelib/tools/qarraydataops.h
|
|
|
|
../src/corelib/tools/qarraydatapointer.h
|
|
|
|
../src/corelib/tools/qbitarray.cpp ../src/corelib/tools/qbitarray.h
|
|
|
|
../src/corelib/tools/qbytearray.cpp ../src/corelib/tools/qbytearray.h
|
|
|
|
../src/corelib/tools/qbytearraymatcher.cpp ../src/corelib/tools/qbytearraymatcher.h
|
|
|
|
../src/corelib/tools/qchar.h
|
|
|
|
../src/corelib/tools/qcryptographichash.cpp ../src/corelib/tools/qcryptographichash.h
|
|
|
|
../src/corelib/tools/qdatetime.cpp ../src/corelib/tools/qdatetime.h ../src/corelib/tools/qdatetime_p.h
|
|
|
|
../src/corelib/tools/qhash.cpp ../src/corelib/tools/qhash.h
|
|
|
|
../src/corelib/tools/qlist.cpp ../src/corelib/tools/qlist.h
|
|
|
|
../src/corelib/tools/qlocale.cpp ../src/corelib/tools/qlocale.h
|
|
|
|
../src/corelib/tools/qlocale_tools.cpp ../src/corelib/tools/qlocale_tools_p.h
|
|
|
|
../src/corelib/tools/qmap.cpp ../src/corelib/tools/qmap.h
|
|
|
|
../src/corelib/tools/qregexp.cpp ../src/corelib/tools/qregexp.h
|
2019-04-29 14:53:27 +00:00
|
|
|
../src/corelib/tools/qringbuffer.cpp # special case
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/tools/qstring.cpp ../src/corelib/tools/qstring.h
|
|
|
|
../src/corelib/tools/qstringlist.cpp ../src/corelib/tools/qstringlist.h
|
|
|
|
../src/corelib/tools/qstringmatcher.h
|
|
|
|
../src/corelib/tools/qvector.h
|
|
|
|
../src/corelib/tools/qversionnumber.cpp ../src/corelib/tools/qversionnumber.h
|
|
|
|
../src/corelib/tools/qvsnprintf.cpp
|
|
|
|
cachekeys.h
|
|
|
|
generators/mac/pbuilder_pbx.cpp generators/mac/pbuilder_pbx.h
|
|
|
|
generators/makefile.cpp generators/makefile.h
|
|
|
|
generators/makefiledeps.cpp generators/makefiledeps.h
|
|
|
|
generators/metamakefile.cpp generators/metamakefile.h
|
|
|
|
generators/projectgenerator.cpp generators/projectgenerator.h
|
|
|
|
generators/unix/unixmake.cpp generators/unix/unixmake.h
|
2019-02-12 13:44:56 +00:00
|
|
|
generators/unix/unixmake2.cpp
|
2019-04-16 14:32:08 +00:00
|
|
|
generators/win32/mingw_make.cpp generators/win32/mingw_make.h
|
|
|
|
generators/win32/msbuild_objectmodel.cpp generators/win32/msbuild_objectmodel.h
|
|
|
|
generators/win32/msvc_nmake.cpp generators/win32/msvc_nmake.h
|
|
|
|
generators/win32/msvc_objectmodel.cpp generators/win32/msvc_objectmodel.h
|
|
|
|
generators/win32/msvc_vcproj.cpp generators/win32/msvc_vcproj.h
|
|
|
|
generators/win32/msvc_vcxproj.cpp generators/win32/msvc_vcxproj.h
|
|
|
|
generators/win32/winmakefile.cpp generators/win32/winmakefile.h
|
|
|
|
generators/xmloutput.cpp generators/xmloutput.h
|
|
|
|
library/ioutils.cpp library/ioutils.h
|
|
|
|
library/proitems.cpp library/proitems.h
|
|
|
|
library/qmake_global.h
|
|
|
|
library/qmakebuiltins.cpp
|
|
|
|
library/qmakeevaluator.cpp library/qmakeevaluator.h library/qmakeevaluator_p.h
|
|
|
|
library/qmakeglobals.cpp library/qmakeglobals.h
|
|
|
|
library/qmakeparser.cpp library/qmakeparser.h
|
|
|
|
library/qmakevfs.cpp library/qmakevfs.h
|
2019-02-12 13:44:56 +00:00
|
|
|
main.cpp
|
2019-04-16 14:32:08 +00:00
|
|
|
meta.cpp meta.h
|
|
|
|
option.cpp option.h
|
|
|
|
project.cpp project.h
|
|
|
|
property.cpp property.h
|
2019-02-12 13:44:56 +00:00
|
|
|
DEFINES
|
2019-04-16 14:32:08 +00:00
|
|
|
PROEVALUATOR_FULL
|
|
|
|
QT_BOOTSTRAPPED
|
|
|
|
QT_BUILD_QMAKE
|
2019-02-12 13:44:56 +00:00
|
|
|
QT_NO_FOREACH
|
2019-04-16 14:32:08 +00:00
|
|
|
QT_VERSION_STR="${PROJECT_VERSION}" # special case
|
|
|
|
QT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} # special case
|
|
|
|
QT_VERSION_MINOR=${PROJECT_VERSION_MINOR} # special case
|
|
|
|
QT_VERSION_PATCH=${PROJECT_VERSION_PATCH} # special case
|
2019-02-12 13:44:56 +00:00
|
|
|
INCLUDE_DIRECTORIES
|
2019-04-16 14:32:08 +00:00
|
|
|
# . # special case
|
2019-02-12 13:44:56 +00:00
|
|
|
library
|
|
|
|
generators
|
2019-05-28 14:41:49 +00:00
|
|
|
generators/mac
|
2019-02-12 13:44:56 +00:00
|
|
|
generators/unix
|
|
|
|
generators/win32
|
2019-05-28 14:41:49 +00:00
|
|
|
library
|
2019-04-16 14:32:08 +00:00
|
|
|
$<TARGET_PROPERTY:Qt::CorePrivate,INTERFACE_INCLUDE_DIRECTORIES> # special case
|
2019-06-06 20:25:05 +00:00
|
|
|
${CMAKE_CURRENT_BINARY_DIR}/../src/corelib/global # special case: for qconfig.cpp
|
2019-04-16 14:32:08 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
qt_internal_add_target_aliases(Bootstrap) # special case
|
|
|
|
|
|
|
|
#### Keys ignored in scope 1:.:.:qmake.pro:<TRUE>:
|
|
|
|
# CONFIG = "cmdline" "-qt"
|
|
|
|
# PRECOMPILED_HEADER = "qmake_pch.h"
|
|
|
|
# _OPTION = "host_build"
|
|
|
|
|
|
|
|
## Scopes:
|
|
|
|
#####################################################################
|
2019-02-12 13:44:56 +00:00
|
|
|
|
2019-04-16 14:32:08 +00:00
|
|
|
extend_target(qmake CONDITION WIN32
|
|
|
|
SOURCES
|
|
|
|
../src/corelib/global/qoperatingsystemversion_win.cpp
|
|
|
|
../src/corelib/io/qfilesystemengine_win.cpp
|
|
|
|
../src/corelib/io/qfilesystemiterator_win.cpp
|
|
|
|
../src/corelib/io/qfsfileengine_win.cpp
|
|
|
|
../src/corelib/io/qsettings_win.cpp
|
|
|
|
../src/corelib/plugin/qsystemlibrary.cpp
|
|
|
|
../src/corelib/tools/qlocale_win.cpp
|
|
|
|
library/registry.cpp # special case
|
|
|
|
DEFINES
|
|
|
|
UNICODE
|
|
|
|
_CRT_SECURE_NO_WARNINGS
|
2019-05-28 14:41:49 +00:00
|
|
|
_ENABLE_EXTENDED_ALIGNED_STORAGE
|
2019-04-16 14:32:08 +00:00
|
|
|
_SCL_SECURE_NO_WARNINGS
|
|
|
|
PUBLIC_LIBRARIES
|
|
|
|
advapi32
|
|
|
|
kernel32
|
|
|
|
netapi32
|
|
|
|
ole32
|
2019-02-12 13:44:56 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
extend_target(qmake CONDITION UNIX
|
|
|
|
SOURCES
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/io/qfilesystemengine_unix.cpp
|
|
|
|
../src/corelib/io/qfilesystemiterator_unix.cpp
|
|
|
|
../src/corelib/io/qfsfileengine_unix.cpp
|
|
|
|
../src/corelib/kernel/qcore_unix.cpp
|
|
|
|
../src/corelib/tools/qlocale_unix.cpp
|
2019-02-12 13:44:56 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
extend_target(qmake CONDITION APPLE_OSX
|
|
|
|
SOURCES
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/kernel/qcore_foundation.mm # special case
|
|
|
|
../src/corelib/kernel/qcore_mac.cpp # special case
|
|
|
|
../src/corelib/global/qoperatingsystemversion_darwin.mm # special case
|
|
|
|
../src/corelib/io/qsettings_mac.cpp # special case
|
|
|
|
PUBLIC_LIBRARIES
|
|
|
|
${FWApplicationServices}
|
|
|
|
${FWCoreServices}
|
|
|
|
${FWFoundation}
|
|
|
|
COMPILE_OPTIONS
|
|
|
|
"-fconstant-cfstrings"
|
2019-02-12 13:44:56 +00:00
|
|
|
)
|
2019-04-16 14:32:08 +00:00
|
|
|
|
|
|
|
# special case big
|
2019-03-11 11:34:52 +00:00
|
|
|
extend_target(qmake CONDITION WIN32
|
|
|
|
SOURCES
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/io/qfilesystemengine_win.cpp
|
|
|
|
../src/corelib/io/qfilesystemiterator_win.cpp
|
|
|
|
../src/corelib/io/qfsfileengine_win.cpp
|
|
|
|
../src/corelib/tools/qlocale_win.cpp
|
|
|
|
../src/corelib/io/qsettings_win.cpp
|
2019-04-29 14:53:27 +00:00
|
|
|
# ../src/corelib/global/qoperatingsystemversion.cpp special case: remove this
|
2019-04-16 14:32:08 +00:00
|
|
|
../src/corelib/plugin/qsystemlibrary.cpp
|
|
|
|
library/registry.cpp
|
2019-03-11 11:34:52 +00:00
|
|
|
DEFINES
|
|
|
|
UNICODE _ENABLE_EXTENDED_ALIGNED_STORAGE _CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS
|
|
|
|
LIBRARIES
|
|
|
|
ole32 advapi32 kernel32 netapi32
|
|
|
|
)
|
2019-02-12 13:44:56 +00:00
|
|
|
|
2019-04-16 14:32:08 +00:00
|
|
|
extend_target(qmake CONDITION WIN32 AND mingw
|
|
|
|
PUBLIC_LIBRARIES
|
|
|
|
uuid
|
|
|
|
)
|
|
|
|
|
|
|
|
extend_target(qmake CONDITION CLANG AND WIN32
|
|
|
|
COMPILE_OPTIONS
|
|
|
|
"-fms-compatibility-version=19.00.23506"
|
|
|
|
"-Wno-microsoft-enum-value"
|
|
|
|
)
|
|
|
|
|
|
|
|
# special case:
|
2019-02-12 13:44:56 +00:00
|
|
|
set_target_properties(qmake PROPERTIES
|
|
|
|
AUTOMOC OFF
|
|
|
|
AUTORCC OFF
|
|
|
|
AUTOUIC OFF
|
|
|
|
)
|
2019-04-29 14:53:27 +00:00
|
|
|
|
|
|
|
qt_internal_add_link_flags_gc_sections(qmake PRIVATE) # special case
|