forked from wang-bin/QtAV
-
Notifications
You must be signed in to change notification settings - Fork 0
/
root.pri
69 lines (64 loc) · 2.76 KB
/
root.pri
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#Designed by Wang Bin(Lucas Wang). 2013 <[email protected]>
#cache mkspecs. compare mkspec with cached one. if not equal, remove old cache to run new compile tests
#TODO: Qt5 does not have QMAKE_MKSPECS, use QMAKE_SPEC, QMAKE_XSPEC
mkspecs_build = $$[QMAKE_MKSPECS]
mkspecs_build ~= s,\\\\,/,g #avoid warning for '\'. qmake knows how to deal with '/'
!isEmpty(mkspecs_cached) {
!isEqual(mkspecs_cached, $$mkspecs_build):CONFIG += recheck
} else {
CONFIG += recheck
}
##TODO: BUILD_DIR=>BUILD_ROOT
#if not empty, it means the parent project may already set it
isEmpty(out_dir):out_dir = $$OUT_PWD
out_dir ~= s,\\\\,/,g #avoid warning for '\'. qmake knows how to deal with '/'
isEmpty(SOURCE_ROOT):SOURCE_ROOT = $$PWD
SOURCE_ROOT ~= s,\\\\,/,g #avoid warning for '\'. qmake knows how to deal with '/'
isEmpty(BUILD_DIR):BUILD_DIR=$$out_dir
message("BUILD_DIR=$$BUILD_DIR")
greaterThan(QT_MAJOR_VERSION, 4) {
#recheck:write_file($$BUILD_DIR/.qmake.cache) #FIXME: empty_file result in no qtCompileTest result in cache
load(configure)
} else {
_QMAKE_CACHE_QT4_ = $$_QMAKE_CACHE_
#_QMAKE_CACHE_QT4_ is built in and always not empty
isEmpty(_QMAKE_CACHE_QT4_)|isEqual(_QMAKE_CACHE_QT4_,) {
_QMAKE_CACHE_QT4_=$$BUILD_DIR/.qmake.cache
}
include(common.pri)
#recheck:write_file($$BUILD_DIR/.qmake.cache) #FIXME: empty_file result in no qtCompileTest result in cache
#use the following lines when building as a sub-project, write cache to this project src dir.
#if build this project alone and do not have sub-project depends on this lib, those lines are not necessary
####ASSUME compile tests and .qmake.cache is in project out root dir
#vars in .qmake.cache will affect all projects in subdirs, even if qmake's working dir is not in .qmake.cache dir
#write_file($$BUILD_DIR/.qmake.cache) ##TODO: erase the existing lines!!
include(configure.pri)
#clear config.log iff reconfigure is required
write_file($$QMAKE_CONFIG_LOG)
#cache() is available after include configure.pri
#load(configure.pri) #what's the difference?
message("cache: $$_QMAKE_CACHE_QT4_")
}
cache(BUILD_DIR, set, BUILD_DIR)
#cache(BUILD_ROOT, set, BUILD_DIR)
cache(SOURCE_ROOT, set, SOURCE_ROOT)
cache(mkspecs_cached, set, mkspecs_build)
#config.tests
!isEmpty(EssentialDepends) {
for(d, EssentialDepends) {
!config_$$d {
CONFIG *= recheck
}
qtCompileTest($$d)|error("$$d is required, but compiler can not find it")
# CONFIG -= recheck
}
}
!isEmpty(OptionalDepends) {
message("checking for optional features...")
for(d, OptionalDepends) {
qtCompileTest($$d)
}
}
!isEmpty(EssentialDepends)|!isEmpty(OptionalDepends) {
message("To recheck the dependencies, run qmake with argument 'CONFIG+=recheck'")
}