069fc33e8a
If '-make examples -no-compile-examples' was specified, sources of Qt's examples would be installed, but the examples would not be built. This switch has always been a source for confusion and is only interesting for distributors, who can just package the examples directory tree. Change-Id: I0291d70e4951d98b553a4abf217db49d05316d3a Reviewed-by: Kai Koehne <kai.koehne@qt.io>
139 lines
4.2 KiB
Plaintext
139 lines
4.2 KiB
Plaintext
#
|
|
# W A R N I N G
|
|
# -------------
|
|
#
|
|
# This file is not part of the Qt API. It exists purely as an
|
|
# implementation detail. It may change from version to version
|
|
# without notice, or even be removed.
|
|
#
|
|
# We mean it.
|
|
#
|
|
|
|
defineTest(addInstallFiles) {
|
|
for(sf, 2) {
|
|
sf = $$relative_path($$sf, $$_PRO_FILE_PWD_)
|
|
contains(sf, \\..*) {
|
|
check_examples: message("Notice: $$_PRO_FILE_ refers to $$sf")
|
|
} else {
|
|
sfp = $$replace(sf, /.*, )
|
|
!equals(sfp, $$sf): \
|
|
$$1 *= $$sfp
|
|
else: \
|
|
$$1 += $$sf
|
|
}
|
|
}
|
|
export($$1)
|
|
}
|
|
|
|
moduleRoot = $$dirname(_QMAKE_CONF_)
|
|
probase = $$relative_path($$_PRO_FILE_PWD_, $$moduleRoot/examples)
|
|
isEmpty(probase)|contains(probase, ^\\..*): \
|
|
return()
|
|
|
|
isEmpty(_QMAKE_CACHE_) {
|
|
moduleRootRelativeToBuildDir = $$relative_path($$moduleRoot, $$OUT_PWD)
|
|
# Check if OUT_PWD is inside module root
|
|
equals(moduleRootRelativeToBuildDir, .)|contains(moduleRootRelativeToBuildDir, \(\.\./\)+\(\.\.\)?): \
|
|
error("You cannot build examples inside the Qt source tree, except as part of a proper Qt build.")
|
|
}
|
|
|
|
contains(TEMPLATE, "vc.*"): \
|
|
return()
|
|
|
|
contains(TEMPLATE, .*app): \
|
|
qtSetQmlPath()
|
|
|
|
for(ex, EXAMPLE_FILES): \
|
|
sourcefiles += $$files($$absolute_path($$ex, $$_PRO_FILE_PWD_))
|
|
for(res, RESOURCES) {
|
|
!contains(res, .*\\.qrc): \
|
|
next()
|
|
rfile = $$absolute_path($$res, $$_PRO_FILE_PWD_)
|
|
rpath = $$dirname(rfile)
|
|
rcont = $$cat($$rfile, lines)
|
|
for (rline, rcont) {
|
|
resrc = $$replace(rline, ^[ \\t]*<file[^>]*>([^<]+)</file>[ \\t]*$, \\1)
|
|
!equals(resrc, $$rline): \
|
|
sourcefiles += $$absolute_path($$resrc, $$rpath)
|
|
}
|
|
}
|
|
for(res, RC_FILE) {
|
|
rfile = $$absolute_path($$res, $$_PRO_FILE_PWD_)
|
|
rpath = $$dirname(rfile)
|
|
rcont = $$cat($$rfile, lines)
|
|
for (rline, rcont) {
|
|
resrc = $$replace(rline, "^\\d+\\s+ICON\\s+[^\"]*\"([^\"]+)\"\$", \\1)
|
|
!equals(resrc, $$rline): \
|
|
sourcefiles += $$absolute_path($$resrc, $$rpath)
|
|
}
|
|
}
|
|
sourcefiles += \
|
|
$$ANDROID_PACKAGE_SOURCE_DIR \
|
|
$$QMAKE_INFO_PLIST \
|
|
$$DISTFILES
|
|
extras = \
|
|
$$_PRO_FILE_PWD_/README \
|
|
$$_PRO_FILE_PWD_/README.TXT \
|
|
$$_PRO_FILE_PWD_/qmldir \
|
|
$$files($$_PRO_FILE_PWD_/*.pri) \
|
|
$$replace(_PRO_FILE_, \\.pro$, .qmlproject) \
|
|
$$replace(_PRO_FILE_, \\.pro$, .json) \
|
|
$$replace(_PRO_FILE_, \\.pro$, .inf)
|
|
for(extra, extras): \
|
|
exists($$extra): \
|
|
sourcefiles += $$extra
|
|
|
|
# Just for Qt Creator
|
|
OTHER_FILES += $$sourcefiles
|
|
|
|
sourcefiles += \
|
|
$$_PRO_FILE_ $$RC_FILE $$DEF_FILE \
|
|
$$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \
|
|
$$DBUS_ADAPTORS $$DBUS_INTERFACES
|
|
addInstallFiles(sources.files, $$sourcefiles)
|
|
sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase
|
|
INSTALLS += sources
|
|
|
|
check_examples {
|
|
srcfiles = $$sources.files
|
|
for(inst, INSTALLS): \
|
|
!equals(inst, target):!contains($${inst}.CONFIG, no_check_exist): \
|
|
for(file, $${inst}.files): \
|
|
instfiles += $$files($$absolute_path($$file, $$_PRO_FILE_PWD_))
|
|
addInstallFiles(srcfiles, $$instfiles)
|
|
|
|
thefiles = $$files($$_PRO_FILE_PWD_/*)
|
|
for(i, thefiles): \
|
|
allfiles += $$relative_path($$i, $$_PRO_FILE_PWD_)
|
|
for(i, srcfiles): \
|
|
allfiles -= $$relative_path($$i, $$_PRO_FILE_PWD_)
|
|
for(i, SUBDIRS) {
|
|
sd = $$eval($${i}.file)
|
|
!isEmpty(sd) {
|
|
sd ~= s,/.*,,
|
|
} else {
|
|
sd = $$eval($${i}.subdir)
|
|
isEmpty(sd): sd = $$i
|
|
}
|
|
allfiles -= $$sd
|
|
}
|
|
allfiles -= doc
|
|
!isEmpty(allfiles): warning("remaining files in $$_PRO_FILE_PWD_: $$allfiles")
|
|
}
|
|
|
|
equals(TEMPLATE, app)|equals(TEMPLATE, lib) {
|
|
!contains(INSTALLS, target) {
|
|
!install_ok: \
|
|
error("$$_PRO_FILE_ is lacking an install target.")
|
|
else: check_examples: \
|
|
warning("$$_PRO_FILE_ is lacking an install target.")
|
|
} else: !equals(target.path, $$sources.path) {
|
|
!install_ok: \
|
|
error("$$_PRO_FILE_ installs target to unexpected location.")
|
|
else: check_examples: \
|
|
warning("$$_PRO_FILE_ installs target to unexpected location.")
|
|
}
|
|
}
|
|
|
|
CONFIG += relative_qt_rpath # Examples built as part of Qt should be relocatable
|