d64abf8166
doing so is somewhat likely to cause follow-up issues, as it turns the source tree into a build tree as a side effect. note that this change does not affect building examples inside an install tree, even if doing that is still ugly. Change-Id: I386bf2ab959269f55553c70b7551dd9afec2bcba Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
138 lines
4.0 KiB
Plaintext
138 lines
4.0 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)
|
|
}
|
|
|
|
probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples)
|
|
isEmpty(probase)|contains(probase, ^\\..*): \
|
|
return()
|
|
|
|
isEmpty(_QMAKE_CACHE_) {
|
|
!equals(OUT_PWD, $$_PRO_FILE_PWD_): \
|
|
return()
|
|
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) {
|
|
rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines)
|
|
for(rline, rfile) {
|
|
resrc = $$replace(rline, ^[ \\t]*<file[^>]*>([^<]+)</file>[ \\t]*$, \\1)
|
|
!equals(resrc, $$rline): \
|
|
sourcefiles += $$resrc
|
|
}
|
|
}
|
|
for(res, RC_FILE) {
|
|
rfile = $$cat($$absolute_path($$res, $$_PRO_FILE_PWD_), lines)
|
|
for(rline, rfile) {
|
|
resrc = $$replace(rline, "^\\d+\\s+ICON\\s+[^\"]*\"([^\"]+)\"\$", \\1)
|
|
!equals(resrc, $$rline): \
|
|
sourcefiles += $$resrc
|
|
}
|
|
}
|
|
sourcefiles += \
|
|
$$ANDROID_PACKAGE_SOURCE_DIR \
|
|
$$QMAKE_INFO_PLIST \
|
|
$$DISTFILES
|
|
extras = \
|
|
$$_PRO_FILE_PWD_/README \
|
|
$$_PRO_FILE_PWD_/README.TXT \
|
|
$$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.")
|
|
}
|
|
}
|
|
|
|
!equals(TEMPLATE, subdirs):!compile_examples {
|
|
TEMPLATE = aux
|
|
CONFIG -= have_target qt staticlib dll
|
|
SOURCES =
|
|
OBJECTIVE_SOURCES =
|
|
INSTALLS -= target
|
|
} else {
|
|
CONFIG += relative_qt_rpath # Examples built as part of Qt should be relocatable
|
|
}
|