qtcreator.pri 6.49 KB
Newer Older
1
2
3
!isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included")
QTCREATOR_PRI_INCLUDED = 1

David Schulz's avatar
David Schulz committed
4
5
6
QTCREATOR_VERSION = 3.6.83
QTCREATOR_COMPAT_VERSION = 3.6.83
BINARY_ARTIFACTS_BRANCH = 4.0
7

Eike Ziller's avatar
Eike Ziller committed
8
# enable c++11
9
CONFIG += c++11
10

11
12
13
14
15
16
17
18
19
20
21
22
23
defineReplace(qtLibraryName) {
   unset(LIBRARY_NAME)
   LIBRARY_NAME = $$1
   CONFIG(debug, debug|release) {
      !debug_and_release|build_pass {
          mac:RET = $$member(LIBRARY_NAME, 0)_debug
              else:win32:RET = $$member(LIBRARY_NAME, 0)d
      }
   }
   isEmpty(RET):RET = $$LIBRARY_NAME
   return($$RET)
}

24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
defineTest(minQtVersion) {
    maj = $$1
    min = $$2
    patch = $$3
    isEqual(QT_MAJOR_VERSION, $$maj) {
        isEqual(QT_MINOR_VERSION, $$min) {
            isEqual(QT_PATCH_VERSION, $$patch) {
                return(true)
            }
            greaterThan(QT_PATCH_VERSION, $$patch) {
                return(true)
            }
        }
        greaterThan(QT_MINOR_VERSION, $$min) {
            return(true)
        }
    }
41
42
43
    greaterThan(QT_MAJOR_VERSION, $$maj) {
        return(true)
    }
44
45
46
    return(false)
}

47
48
49
50
51
# For use in custom compilers which just copy files
defineReplace(stripSrcDir) {
    return($$relative_path($$absolute_path($$1, $$OUT_PWD), $$_PRO_FILE_PWD_))
}

52
53
!isEmpty(BUILD_TESTS):TEST = 1

54
55
isEmpty(TEST):CONFIG(debug, debug|release) {
    !debug_and_release|build_pass {
con's avatar
con committed
56
57
58
59
        TEST = 1
    }
}

60
isEmpty(IDE_LIBRARY_BASENAME) {
61
62
    IDE_LIBRARY_BASENAME = lib
}
63

64
65
66
equals(TEST, 1) {
    QT +=testlib
    DEFINES += WITH_TESTS
con's avatar
con committed
67
68
}

69
IDE_SOURCE_TREE = $$PWD
70
71
72
isEmpty(IDE_BUILD_TREE) {
    sub_dir = $$_PRO_FILE_PWD_
    sub_dir ~= s,^$$re_escape($$PWD),,
Christian Kandeler's avatar
Christian Kandeler committed
73
    IDE_BUILD_TREE = $$clean_path($$OUT_PWD)
74
75
    IDE_BUILD_TREE ~= s,$$re_escape($$sub_dir)$,,
}
76

77
IDE_APP_PATH = $$IDE_BUILD_TREE/bin
78
osx {
79
    IDE_APP_TARGET   = "Qt Creator"
80
81
82
83
84
85
86
87
88
89

    IDE_APP_BUNDLE = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app

    # set output path if not set manually
    isEmpty(IDE_OUTPUT_PATH): IDE_OUTPUT_PATH = $$IDE_APP_BUNDLE/Contents

    IDE_LIBRARY_PATH = $$IDE_OUTPUT_PATH/Frameworks
    IDE_PLUGIN_PATH  = $$IDE_OUTPUT_PATH/PlugIns
    IDE_LIBEXEC_PATH = $$IDE_OUTPUT_PATH/Resources
    IDE_DATA_PATH    = $$IDE_OUTPUT_PATH/Resources
90
    IDE_DOC_PATH     = $$IDE_DATA_PATH/doc
91
    IDE_BIN_PATH     = $$IDE_OUTPUT_PATH/MacOS
92
    copydata = 1
93
94
95

    LINK_LIBRARY_PATH = $$IDE_APP_BUNDLE/Contents/Frameworks
    LINK_PLUGIN_PATH  = $$IDE_APP_BUNDLE/Contents/PlugIns
con's avatar
con committed
96
} else {
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
97
98
    contains(TEMPLATE, vc.*):vcproj = 1
    IDE_APP_TARGET   = qtcreator
99
100
101
102
103

    # target output path if not set manually
    isEmpty(IDE_OUTPUT_PATH): IDE_OUTPUT_PATH = $$IDE_BUILD_TREE

    IDE_LIBRARY_PATH = $$IDE_OUTPUT_PATH/$$IDE_LIBRARY_BASENAME/qtcreator
Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
104
    IDE_PLUGIN_PATH  = $$IDE_LIBRARY_PATH/plugins
105
106
107
    IDE_DATA_PATH    = $$IDE_OUTPUT_PATH/share/qtcreator
    IDE_DOC_PATH     = $$IDE_OUTPUT_PATH/share/doc/qtcreator
    IDE_BIN_PATH     = $$IDE_OUTPUT_PATH/bin
108
    win32: \
109
        IDE_LIBEXEC_PATH = $$IDE_OUTPUT_PATH/bin
110
    else: \
111
        IDE_LIBEXEC_PATH = $$IDE_OUTPUT_PATH/libexec/qtcreator
112
113
114
115
    !isEqual(IDE_SOURCE_TREE, $$IDE_OUTPUT_PATH):copydata = 1

    LINK_LIBRARY_PATH = $$IDE_BUILD_TREE/$$IDE_LIBRARY_BASENAME/qtcreator
    LINK_PLUGIN_PATH  = $$LINK_LIBRARY_PATH/plugins
116
117
118
119
120
121
122
123
124
125

    INSTALL_LIBRARY_PATH = $$QTC_PREFIX/$$IDE_LIBRARY_BASENAME/qtcreator
    INSTALL_PLUGIN_PATH  = $$INSTALL_LIBRARY_PATH/plugins
    win32: \
        INSTALL_LIBEXEC_PATH = $$QTC_PREFIX/bin
    else: \
        INSTALL_LIBEXEC_PATH = $$QTC_PREFIX/libexec/qtcreator
    INSTALL_DATA_PATH    = $$QTC_PREFIX/share/qtcreator
    INSTALL_DOC_PATH     = $$QTC_PREFIX/share/doc/qtcreator
    INSTALL_BIN_PATH     = $$QTC_PREFIX/bin
con's avatar
con committed
126
127
128
}

INCLUDEPATH += \
129
    $$IDE_BUILD_TREE/src \ # for <app/app_version.h>
con's avatar
con committed
130
    $$IDE_SOURCE_TREE/src/libs \
131
132
    $$IDE_SOURCE_TREE/tools

133
134
QTC_PLUGIN_DIRS_FROM_ENVIRONMENT = $$(QTC_PLUGIN_DIRS)
QTC_PLUGIN_DIRS += $$split(QTC_PLUGIN_DIRS_FROM_ENVIRONMENT, $$QMAKE_DIRLIST_SEP)
135
QTC_PLUGIN_DIRS += $$IDE_SOURCE_TREE/src/plugins
Eike Ziller's avatar
Eike Ziller committed
136
for(dir, QTC_PLUGIN_DIRS) {
137
138
    INCLUDEPATH += $$dir
}
con's avatar
con committed
139

140
141
142
CONFIG += \
    depend_includepath \
    no_include_pwd
con's avatar
con committed
143

144
145
LIBS *= -L$$LINK_LIBRARY_PATH  # Qt Creator libraries
exists($$IDE_LIBRARY_PATH): LIBS *= -L$$IDE_LIBRARY_PATH  # library path from output path
146

147
148
149
150
151
152
!isEmpty(vcproj) {
    DEFINES += IDE_LIBRARY_BASENAME=\"$$IDE_LIBRARY_BASENAME\"
} else {
    DEFINES += IDE_LIBRARY_BASENAME=\\\"$$IDE_LIBRARY_BASENAME\\\"
}

153
DEFINES += QT_CREATOR QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII
154
!macx:DEFINES += QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION
155

156
unix {
dt's avatar
dt committed
157
158
    CONFIG(debug, debug|release):OBJECTS_DIR = $${OUT_PWD}/.obj/debug-shared
    CONFIG(release, debug|release):OBJECTS_DIR = $${OUT_PWD}/.obj/release-shared
159

dt's avatar
dt committed
160
161
    CONFIG(debug, debug|release):MOC_DIR = $${OUT_PWD}/.moc/debug-shared
    CONFIG(release, debug|release):MOC_DIR = $${OUT_PWD}/.moc/release-shared
162

Oswald Buddenhagen's avatar
Oswald Buddenhagen committed
163
164
    RCC_DIR = $${OUT_PWD}/.rcc
    UI_DIR = $${OUT_PWD}/.uic
165
}
166

Orgad Shaneh's avatar
Orgad Shaneh committed
167
win32-msvc* {
168
169
    #Don't warn about sprintf, fopen etc being 'unsafe'
    DEFINES += _CRT_SECURE_NO_WARNINGS
170
    QMAKE_CXXFLAGS_WARN_ON *= -w44996
171
172
    # Speed up startup time when debugging with cdb
    QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO
173
}
174

175
qt {
176
    contains(QT, core): QT += concurrent
177
178
    contains(QT, gui): QT += widgets
}
179

180
QBSFILE = $$replace(_PRO_FILE_, \\.pro$, .qbs)
181
exists($$QBSFILE):DISTFILES += $$QBSFILE
182

183
184
185
186
187
!isEmpty(QTC_PLUGIN_DEPENDS) {
    LIBS *= -L$$IDE_PLUGIN_PATH  # plugin path from output directory
    LIBS *= -L$$LINK_PLUGIN_PATH  # when output path is different from Qt Creator build directory
}

188
189
190
191
192
193
194
# recursively resolve plugin deps
done_plugins =
for(ever) {
    isEmpty(QTC_PLUGIN_DEPENDS): \
        break()
    done_plugins += $$QTC_PLUGIN_DEPENDS
    for(dep, QTC_PLUGIN_DEPENDS) {
195
196
197
198
199
200
201
202
203
204
        dependencies_file =
        for(dir, QTC_PLUGIN_DIRS) {
            exists($$dir/$$dep/$${dep}_dependencies.pri) {
                dependencies_file = $$dir/$$dep/$${dep}_dependencies.pri
                break()
            }
        }
        isEmpty(dependencies_file): \
            error("Plugin dependency $$dep not found")
        include($$dependencies_file)
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
        LIBS += -l$$qtLibraryName($$QTC_PLUGIN_NAME)
    }
    QTC_PLUGIN_DEPENDS = $$unique(QTC_PLUGIN_DEPENDS)
    QTC_PLUGIN_DEPENDS -= $$unique(done_plugins)
}

# recursively resolve library deps
done_libs =
for(ever) {
    isEmpty(QTC_LIB_DEPENDS): \
        break()
    done_libs += $$QTC_LIB_DEPENDS
    for(dep, QTC_LIB_DEPENDS) {
        include($$PWD/src/libs/$$dep/$${dep}_dependencies.pri)
        LIBS += -l$$qtLibraryName($$QTC_LIB_NAME)
    }
    QTC_LIB_DEPENDS = $$unique(QTC_LIB_DEPENDS)
    QTC_LIB_DEPENDS -= $$unique(done_libs)
}