!isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included") QTCREATOR_PRI_INCLUDED = 1 QTCREATOR_VERSION = 4.2.82 QTCREATOR_COMPAT_VERSION = 4.2.82 VERSION = $$QTCREATOR_VERSION BINARY_ARTIFACTS_BRANCH = master CONFIG += c++14 defineReplace(qtLibraryTargetName) { 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) } defineReplace(qtLibraryName) { RET = $$qtLibraryTargetName($$1) win32 { VERSION_LIST = $$split(QTCREATOR_VERSION, .) RET = $$RET$$first(VERSION_LIST) } 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) } # For use in custom compilers which just copy files defineReplace(stripSrcDir) { return($$relative_path($$absolute_path($$1, $$OUT_PWD), $$_PRO_FILE_PWD_)) } macos:!minQtVersion(5, 7, 0) { # Qt 5.6 still sets deployment target 10.7, which does not work # with all C++11/14 features (e.g. std::future) QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.8 } QTC_BUILD_TESTS = $$(QTC_BUILD_TESTS) !isEmpty(QTC_BUILD_TESTS):TEST = $$QTC_BUILD_TESTS !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 = $$clean_path($$OUT_PWD) IDE_BUILD_TREE ~= s,$$re_escape($$sub_dir)$,, } IDE_APP_PATH = $$IDE_BUILD_TREE/bin osx { IDE_APP_TARGET = "Qt Creator" # check if IDE_BUILD_TREE is actually an existing Qt Creator.app, # for building against a binary package exists($$IDE_BUILD_TREE/Contents/MacOS/Qt Creator): IDE_APP_BUNDLE = $$IDE_BUILD_TREE else: 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 IDE_DOC_PATH = $$IDE_DATA_PATH/doc IDE_BIN_PATH = $$IDE_OUTPUT_PATH/MacOS copydata = 1 LINK_LIBRARY_PATH = $$IDE_APP_BUNDLE/Contents/Frameworks LINK_PLUGIN_PATH = $$IDE_APP_BUNDLE/Contents/PlugIns INSTALL_LIBRARY_PATH = $$QTC_PREFIX/$${IDE_APP_TARGET}.app/Contents/Frameworks INSTALL_PLUGIN_PATH = $$QTC_PREFIX/$${IDE_APP_TARGET}.app/Contents/PlugIns INSTALL_LIBEXEC_PATH = $$QTC_PREFIX/$${IDE_APP_TARGET}.app/Contents/Resources INSTALL_DATA_PATH = $$QTC_PREFIX/$${IDE_APP_TARGET}.app/Contents/Resources INSTALL_DOC_PATH = $$INSTALL_DATA_PATH/doc INSTALL_BIN_PATH = $$QTC_PREFIX/$${IDE_APP_TARGET}.app/Contents/MacOS INSTALL_APP_PATH = $$QTC_PREFIX/ } else { contains(TEMPLATE, vc.*):vcproj = 1 IDE_APP_TARGET = qtcreator # 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 IDE_PLUGIN_PATH = $$IDE_LIBRARY_PATH/plugins IDE_DATA_PATH = $$IDE_OUTPUT_PATH/share/qtcreator IDE_DOC_PATH = $$IDE_OUTPUT_PATH/share/doc/qtcreator IDE_BIN_PATH = $$IDE_OUTPUT_PATH/bin win32: \ IDE_LIBEXEC_PATH = $$IDE_OUTPUT_PATH/bin else: \ IDE_LIBEXEC_PATH = $$IDE_OUTPUT_PATH/libexec/qtcreator !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 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 INSTALL_APP_PATH = $$QTC_PREFIX/bin } RELATIVE_PLUGIN_PATH = $$relative_path($$IDE_PLUGIN_PATH, $$IDE_BIN_PATH) RELATIVE_LIBEXEC_PATH = $$relative_path($$IDE_LIBEXEC_PATH, $$IDE_BIN_PATH) RELATIVE_DATA_PATH = $$relative_path($$IDE_DATA_PATH, $$IDE_BIN_PATH) RELATIVE_DOC_PATH = $$relative_path($$IDE_DOC_PATH, $$IDE_BIN_PATH) DEFINES += $$shell_quote(RELATIVE_PLUGIN_PATH=\"$$RELATIVE_PLUGIN_PATH\") DEFINES += $$shell_quote(RELATIVE_LIBEXEC_PATH=\"$$RELATIVE_LIBEXEC_PATH\") DEFINES += $$shell_quote(RELATIVE_DATA_PATH=\"$$RELATIVE_DATA_PATH\") DEFINES += $$shell_quote(RELATIVE_DOC_PATH=\"$$RELATIVE_DOC_PATH\") INCLUDEPATH += \ $$IDE_BUILD_TREE/src \ # for in case of actual build directory $$IDE_SOURCE_TREE/src \ # for in case of binary package with dev package $$IDE_SOURCE_TREE/src/libs \ $$IDE_SOURCE_TREE/tools win32:exists($$IDE_SOURCE_TREE/lib/qtcreator) { # for .lib in case of binary package with dev package LIBS *= -L$$IDE_SOURCE_TREE/lib/qtcreator LIBS *= -L$$IDE_SOURCE_TREE/lib/qtcreator/plugins } 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 \ no_include_pwd LIBS *= -L$$LINK_LIBRARY_PATH # Qt Creator libraries exists($$IDE_LIBRARY_PATH): LIBS *= -L$$IDE_LIBRARY_PATH # library path from output 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_RESTRICTED_CAST_FROM_ASCII \ QT_DISABLE_DEPRECATED_BEFORE=0x050600 !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 } msvc { #Don't warn about sprintf, fopen etc being 'unsafe' DEFINES += _CRT_SECURE_NO_WARNINGS QMAKE_CXXFLAGS_WARN_ON *= -w44996 # Speed up startup time when debugging with cdb QMAKE_LFLAGS_DEBUG += /INCREMENTAL:NO } qt { contains(QT, core): QT += concurrent contains(QT, gui): QT += widgets } QBSFILE = $$replace(_PRO_FILE_, \\.pro$, .qbs) exists($$QBSFILE):DISTFILES += $$QBSFILE !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 } # 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) }