!isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included") QTCREATOR_PRI_INCLUDED = 1 QTCREATOR_VERSION = 3.2.2 QTCREATOR_COMPAT_VERSION = 3.2.0 BINARY_ARTIFACTS_BRANCH = 3.2 # enable c++11 isEqual(QT_MAJOR_VERSION, 5) { CONFIG += c++11 } else { macx { !macx-clang*: error("You need to use the macx-clang or macx-clang-libc++ mkspec to compile Qt Creator (call qmake with '-spec unsupported/macx-clang')") QMAKE_CFLAGS += -mmacosx-version-min=10.7 QMAKE_CXXFLAGS += -std=c++11 -stdlib=libc++ -mmacosx-version-min=10.7 QMAKE_OBJECTIVE_CXXFLAGS += -std=c++11 -stdlib=libc++ -mmacosx-version-min=10.7 QMAKE_LFLAGS += -stdlib=libc++ -mmacosx-version-min=10.7 } else:linux-g++* { QMAKE_CXXFLAGS += -std=c++0x } else:linux-icc* { QMAKE_CXXFLAGS += -std=c++11 } else:linux-clang* { QMAKE_CXXFLAGS += -std=c++11 QMAKE_LFLAGS += -stdlib=libc++ -lc++abi } else:win32-g++* { QMAKE_CXXFLAGS += -std=c++0x } # nothing to do for MSVC10+ } isEqual(QT_MAJOR_VERSION, 5) { defineReplace(cleanPath) { return($$clean_path($$1)) } defineReplace(targetPath) { return($$shell_path($$1)) } } else { # qt5 defineReplace(cleanPath) { win32:1 ~= s|\\\\|/|g contains(1, ^/.*):pfx = / else:pfx = segs = $$split(1, /) out = for(seg, segs) { equals(seg, ..):out = $$member(out, 0, -2) else:!equals(seg, .):out += $$seg } return($$join(out, /, $$pfx)) } defineReplace(targetPath) { return($$replace(1, /, $$QMAKE_DIR_SEP)) } } # qt5 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) } 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) } } greaterThan(QT_MAJOR_VERSION, $$maj) { return(true) } return(false) } isEqual(QT_MAJOR_VERSION, 5) { # For use in custom compilers which just copy files defineReplace(stripSrcDir) { return($$relative_path($$absolute_path($$1, $$OUT_PWD), $$_PRO_FILE_PWD_)) } } else { # qt5 # For use in custom compilers which just copy files win32:i_flag = i defineReplace(stripSrcDir) { win32 { !contains(1, ^.:.*):1 = $$OUT_PWD/$$1 } else { !contains(1, ^/.*):1 = $$OUT_PWD/$$1 } out = $$cleanPath($$1) out ~= s|^$$re_escape($$_PRO_FILE_PWD_/)||$$i_flag return($$out) } } # qt5 !isEmpty(BUILD_TESTS):TEST = 1 isEmpty(TEST):CONFIG(debug, debug|release) { !debug_and_release|build_pass { TEST = 1 } } isEmpty(IDE_LIBRARY_BASENAME) { IDE_LIBRARY_BASENAME = lib } equals(TEST, 1) { QT +=testlib DEFINES += WITH_TESTS } IDE_SOURCE_TREE = $$PWD isEmpty(IDE_BUILD_TREE) { sub_dir = $$_PRO_FILE_PWD_ sub_dir ~= s,^$$re_escape($$PWD),, IDE_BUILD_TREE = $$cleanPath($$OUT_PWD) IDE_BUILD_TREE ~= s,$$re_escape($$sub_dir)$,, } IDE_APP_PATH = $$IDE_BUILD_TREE/bin macx { IDE_APP_TARGET = "Qt Creator" IDE_LIBRARY_PATH = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/PlugIns IDE_PLUGIN_PATH = $$IDE_LIBRARY_PATH IDE_LIBEXEC_PATH = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/Resources IDE_DATA_PATH = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/Resources IDE_DOC_PATH = $$IDE_DATA_PATH/doc IDE_BIN_PATH = $$IDE_APP_PATH/$${IDE_APP_TARGET}.app/Contents/MacOS copydata = 1 } else { contains(TEMPLATE, vc.*):vcproj = 1 IDE_APP_TARGET = qtcreator IDE_LIBRARY_PATH = $$IDE_BUILD_TREE/$$IDE_LIBRARY_BASENAME/qtcreator IDE_PLUGIN_PATH = $$IDE_LIBRARY_PATH/plugins IDE_LIBEXEC_PATH = $$IDE_APP_PATH # FIXME IDE_DATA_PATH = $$IDE_BUILD_TREE/share/qtcreator IDE_DOC_PATH = $$IDE_BUILD_TREE/share/doc/qtcreator IDE_BIN_PATH = $$IDE_APP_PATH !isEqual(IDE_SOURCE_TREE, $$IDE_BUILD_TREE):copydata = 1 } INCLUDEPATH += \ $$IDE_BUILD_TREE/src \ # for $$IDE_SOURCE_TREE/src/libs \ $$IDE_SOURCE_TREE/tools QTC_PLUGIN_DIRS_FROM_ENVIRONMENT = $$(QTC_PLUGIN_DIRS) QTC_PLUGIN_DIRS += $$split(QTC_PLUGIN_DIRS_FROM_ENVIRONMENT, $$QMAKE_DIRLIST_SEP) QTC_PLUGIN_DIRS += $$IDE_SOURCE_TREE/src/plugins for(dir, QTC_PLUGIN_DIRS) { INCLUDEPATH += $$dir } CONFIG += depend_includepath LIBS += -L$$IDE_LIBRARY_PATH !isEmpty(vcproj) { DEFINES += IDE_LIBRARY_BASENAME=\"$$IDE_LIBRARY_BASENAME\" } else { DEFINES += IDE_LIBRARY_BASENAME=\\\"$$IDE_LIBRARY_BASENAME\\\" } DEFINES += QT_CREATOR QT_NO_CAST_TO_ASCII QT_NO_CAST_FROM_ASCII !macx:DEFINES += QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION unix { CONFIG(debug, debug|release):OBJECTS_DIR = $${OUT_PWD}/.obj/debug-shared CONFIG(release, debug|release):OBJECTS_DIR = $${OUT_PWD}/.obj/release-shared CONFIG(debug, debug|release):MOC_DIR = $${OUT_PWD}/.moc/debug-shared CONFIG(release, debug|release):MOC_DIR = $${OUT_PWD}/.moc/release-shared RCC_DIR = $${OUT_PWD}/.rcc UI_DIR = $${OUT_PWD}/.uic } win32-msvc* { #Don't warn about sprintf, fopen etc being 'unsafe' DEFINES += _CRT_SECURE_NO_WARNINGS # Speed up startup time when debugging with cdb QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO } qt:greaterThan(QT_MAJOR_VERSION, 4) { contains(QT, core): QT += concurrent contains(QT, gui): QT += widgets DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x040900 } QBSFILE = $$replace(_PRO_FILE_, \\.pro$, .qbs) exists($$QBSFILE):OTHER_FILES += $$QBSFILE !isEmpty(QTC_PLUGIN_DEPENDS):LIBS *= -L$$IDE_PLUGIN_PATH # recursively resolve plugin deps done_plugins = for(ever) { isEmpty(QTC_PLUGIN_DEPENDS): \ break() done_plugins += $$QTC_PLUGIN_DEPENDS for(dep, QTC_PLUGIN_DEPENDS) { 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) 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) }