qmake 与 配置文件

news2025/1/23 17:39:55

用qmake生成makefile的时候,背后会先执行一堆用qmake language编写的库文件(配置文件),用于初始化一些环境相关的工作,为后续解析pro文件做准备。

下面是qmake解析一个新建的qt工程的pro文件背后所解析的配置文件的文件路径。通过特殊变量QMAKE_INTERNAL_INCLUDED_FILES来获取。解析的文件按解析完成时间从上到下排列,(排在前面的不一定是最先打开的)。这些配置文件中有定义一部分全局变量,可以在你的pro文件中访问。(qmake解析文件的访问顺序需要通过 -d参数来查看)

.qmake.super ,.qmake.conf ,.qmake.cache ,.qmake.stash是在解析配置文件之前就完成的,qmake对这几个文件设置LoadHidden参数给隐藏起来的。记录这些配置文件的qmake源码逻辑。

//E:\workspace\QtWork\qmake\library\qmakeevaluator.cpp
QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFile(
        const QString &fileName, QMakeHandler::EvalFileType type, LoadFlags flags)
{
    QMakeParser::ParseFlags pflags = QMakeParser::ParseUseCache;
    if (!(flags & LoadSilent))
        pflags |= QMakeParser::ParseReportMissing;
    if (ProFile *pro = m_parser->parsedProFile(fileName, pflags)) {
        m_locationStack.push(m_current);
        VisitReturn ok = visitProFile(pro, type, flags);
        m_current = m_locationStack.pop();
        pro->deref();
        if (ok == ReturnTrue && !(flags & LoadHidden)) {
            ProStringList &iif = m_valuemapStack.first()[ProKey("QMAKE_INTERNAL_INCLUDED_FILES")];
            ProString ifn(fileName);
            if (!iif.contains(ifn))
                iif << ifn;
        }
        return ok;
    } else {
        return ReturnFalse;
    }
}

 另外一个特殊的变量,QMAKE_INTERNAL_INCLUDED_FEATURES。

defineTest(printNames){
    for(var,ARGS):message($$var)
}
printNames($$QMAKE_INTERNAL_INCLUDED_FEATURES)

#输出:
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_pre.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_config.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_functions.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_post.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_pre.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_config.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_functions.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_post.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
Project MESSAGE: D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf

下面是调试qmake时(注意这里不是调试普通的工程文件,建议不要在调试普通工程文件时使用-d参数,但是可以在命令行窗口中用qmake生成makefile时使用-d参数。),用“-d” 参数时,打印出来的日志的一小部分,首先进入spec_pre.prf文件,“-d”参数,让qmake对每一句qmake language写的代码都做打印,可以对比下面日志和spec_pre.prf的内容
  D:\Qt\Qt5.12.0\5.12.0\msvc2015_64\mkspecs\features\spec_pre.prf

# This file is loaded by qmake right before loading the qmakespec.
# At this point, the built-in variables have been set up and the project's
# .qmake.super was read (if present).

QMAKE_DIR_SEP           = $$DIR_SEPARATOR
QMAKE_DIRLIST_SEP       = $$DIRLIST_SEPARATOR

QMAKE_EXT_C             = .c
QMAKE_EXT_CPP           = .cpp .cc .cxx
QMAKE_EXT_OBJC          = .m
QMAKE_EXT_OBJCXX        = .mm
QMAKE_EXT_CPP_MOC       = .moc
QMAKE_EXT_H             = .h .hpp .hh .hxx
QMAKE_EXT_H_MOC         = .cpp
QMAKE_EXT_JS            = .js
QMAKE_EXT_LEX           = .l
QMAKE_EXT_LIBTOOL       = .la
QMAKE_EXT_PKGCONFIG     = .pc
QMAKE_EXT_PRL           = .prl
QMAKE_EXT_UI            = .ui
QMAKE_EXT_YACC          = .y

QMAKE_CPP_MOD_MOC       =
QMAKE_H_MOD_MOC         = moc_
QMAKE_MOD_LEX           = _lex
QMAKE_MOD_YACC          = _yacc

defineTest(ensurePathEnv) {
    isEmpty(QMAKE_PATH_ENV) {
        QMAKE_PATH_ENV = $$(PATH)
        QMAKE_PATH_ENV = $$split(QMAKE_PATH_ENV, $$QMAKE_DIRLIST_SEP)
        export(QMAKE_PATH_ENV)
    }
}

equals(QMAKE_HOST.os, Windows) {
    QMAKE_EXT_OBJ       = .obj
    QMAKE_EXT_RES       = .res
    QMAKE_SH            =
    ensurePathEnv()
    for(dir, QMAKE_PATH_ENV) {
        exists($$dir/sh.exe) {
            QMAKE_SH = $$dir/sh.exe
            break()
        }
    }
} else {
    QMAKE_EXT_CPP      += .C
    QMAKE_EXT_H        += .H
    QMAKE_EXT_OBJ       = .o
    QMAKE_SH            = sh
}

CONFIG = file_copies qmake_use qt warn_on release link_prl
QT = core gui

这是qmake开始解析的调用堆栈spec_pre.prf,第9行的进入的evaluateFile是输入的pro工程文件。

杂谈:qmake解析一个简单的qt工程的 工程文件t.pro 时 完整配置文件访问记录:

QT +=network widgets

TEMPLATE = app
CONFIG += c++11 console
CONFIG -= app_bundle

SOURCES += \
        main.cpp \
    base.cpp \
    base1.cpp

HEADERS += \
    base.h \
    base1.h

DISTFILES +=

RESOURCES +=

message(CONFIG = $$COFIG)

配置文件文件访问与函数调用过程:

---------------------runQMake(int argc, char **argv)---------------------------------------------------start
 ---------------------QMakeProject::QMakeProject()-------------------------------------------start end
 ---------------------QMakeProject::read(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)----------start  parsing for checking the grammar error,and evalute the values
  ---------------------QMakeEvaluator::evaluateFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------start
  DEBUG 0: evaluateing file E:/test/t1.pro
   ---------------------QMakeEvaluator::visitProFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------start
    ---------------------LoadPreFiles:loadSpec()-------start
     ---------------------loadInternalSpec()-------start
      ---------------------evaluateFeatureFile(spec_pre.prf)-------start
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_pre.prf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_pre.prf
      ---------------------evaluateFeatureFile(spec_pre.prf)-------end
      ---------------------evaluateFile(qmake.conf)-------start
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/win32-msvc/qmake.conf
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-desktop.conf
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/angle.conf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/angle.conf
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/windows-vulkan.conf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/windows-vulkan.conf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-desktop.conf
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_config.prf
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/qconfig.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/qconfig.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3danimation.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3danimation.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3danimation_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3danimation_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dcore.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dcore.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dcore_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dcore_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dextras.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dextras.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dextras_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dextras_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dinput.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dinput.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dinput_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dinput_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dlogic.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dlogic.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dlogic_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dlogic_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquick.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquick.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquick_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquick_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickanimation.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickanimation.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickanimation_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickanimation_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickextras.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickextras.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickextras_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickextras_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickinput.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickinput.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickinput_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickinput_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickrender.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickrender.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickrender_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickrender_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickscene2d.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickscene2d.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickscene2d_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3dquickscene2d_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3drender.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3drender.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3drender_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_3drender_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_accessibility_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_accessibility_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axbase.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axbase.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axbase_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axbase_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axcontainer.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axcontainer.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axcontainer_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axcontainer_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axserver.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axserver.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axserver_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_axserver_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_bluetooth.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_bluetooth.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_bluetooth_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_bluetooth_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_bootstrap_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_bootstrap_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_concurrent.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_concurrent.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_concurrent_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_concurrent_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_core.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_core.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_core_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_core_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_dbus.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_dbus.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_dbus_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_dbus_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_designer.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_designer.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_designer_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_designer_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_designercomponents_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_designercomponents_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_devicediscovery_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_devicediscovery_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_edid_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_edid_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_egl_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_egl_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_fb_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_fb_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_fontdatabase_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_fontdatabase_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gamepad.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gamepad.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gamepad_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gamepad_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gui.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gui.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gui_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_gui_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_help.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_help.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_help_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_help_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_location.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_location.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_location_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_location_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimedia.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimedia.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimedia_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimedia_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimediawidgets.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimediawidgets.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimediawidgets_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_multimediawidgets_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_network.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_network.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_network_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_network_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_nfc.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_nfc.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_nfc_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_nfc_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_opengl.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_opengl.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_opengl_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_opengl_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_openglextensions.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_openglextensions.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_openglextensions_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_openglextensions_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_packetprotocol_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_packetprotocol_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_platformcompositor_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_platformcompositor_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioning.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioning.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioning_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioning_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioningquick.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioningquick.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioningquick_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_positioningquick_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_printsupport.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_printsupport.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_printsupport_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_printsupport_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qml.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qml.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qml_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qml_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmldebug_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmldebug_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmldevtools_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmldevtools_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmltest.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmltest.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmltest_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qmltest_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quick.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quick.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quick_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quick_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickcontrols2.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickcontrols2.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickcontrols2_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickcontrols2_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickparticles_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickparticles_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickshapes_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickshapes_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quicktemplates2_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quicktemplates2_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickwidgets.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickwidgets.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickwidgets_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_quickwidgets_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_remoteobjects.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_remoteobjects.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_remoteobjects_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_remoteobjects_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_repparser.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_repparser.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_repparser_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_repparser_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_scxml.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_scxml.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_scxml_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_scxml_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sensors.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sensors.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sensors_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sensors_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialbus.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialbus.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialbus_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialbus_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialport.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialport.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialport_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_serialport_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sql.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sql.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sql_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_sql_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_svg.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_svg.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_svg_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_svg_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_testlib.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_testlib.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_testlib_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_testlib_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_texttospeech.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_texttospeech.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_texttospeech_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_texttospeech_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_theme_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_theme_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_uiplugin.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_uiplugin.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_uitools.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_uitools.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_uitools_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_uitools_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_vulkan_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_vulkan_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webchannel.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webchannel.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webchannel_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webchannel_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_websockets.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_websockets.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_websockets_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_websockets_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webview.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webview.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webview_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_webview_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_widgets.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_widgets.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_widgets_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_widgets_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_windowsuiautomation_support_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_winextras.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_winextras.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_winextras_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_winextras_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xml.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xml.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xml_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xml_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xmlpatterns.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xmlpatterns.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xmlpatterns_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_xmlpatterns_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_zlib_private.pri
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/modules/qt_lib_zlib_private.pri
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_functions.prf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_functions.prf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt_config.prf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/win32-msvc/qmake.conf
      ---------------------evaluateFile(qmake.conf)-----------------------------------------end
      ---------------------evaluateFeatureFile(spec_post.prf)------------------------------start
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_post.prf
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/spec_post.prf
      ---------------------evaluateFeatureFile(spec_post.prf)--------------------------------end
     ---------------------loadInternalSpec()-----------------------------------------end
    DEBUG 0: evaluateing file E:/test/.qmake.stash
    DEBUG 0: done evaluateing file E:/test/.qmake.stash
    ---------------------loadSpec()--------------------------------------------------end
    ---------------------evaluateCommand()  (process command input early_State  )--------------start end
    ---------------------applyExtraConfigs()-------------------------------------------------start end
    ---------------------evaluateFeatureFile(default_pre.prf)---------------------------------------start
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
    ---------------------evaluateFeatureFile(default_pre.prf)-------------------------------------end
    ---------------------evaluateCommand()  (process command input before_State)--------------start end
    ---------------------applyExtraConfigs()---------------------------------------------------start end
    ---------------------visitProBlock(t1.pro)------------------------------------------------start
     ---------------------parse and evaluate codes in t1.pro, and evaluate includeing pri/pro/prf if any-------------start end
    Project MESSAGE:CONFIG = lex yacc debug exceptions depend_includepath testcase_targets import_plugins import_qpa_plugin windows file_copies qmake_use qt warn_on release link_prl flat debug_and_release debug_and_release_target precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe shared release no_plugin_manifest win32 msvc copy_dir_files c++11 win32-msvc2015 debug qml_debug c++11 console
    ---------------------visitProBlock(t1.pro)-----------------------------end
    ---------------------evaluateCommand()  (process command input after_State)--------------start end
    ---------------------applyExtraConfigs()--------------------------------------------------start end
    ---------------------evaluateFeatureFile(default_post.prf)-------start
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
    ---------------------evaluateFeatureFile(default_post.prf)-------end
    ---------------------evaluateCommand()  (process command input late_State)--------------start end
    ---------------------evaluateConfigFeatures()(process CONFIG feature files,will make the file name,and find the file in the dir have been used in upper process)--------------------start
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/console.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/console.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qml_debug.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qml_debug.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/precompile_header.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/precompile_header.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/warn_on.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/warn_on.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resources.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resources.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/moc.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/moc.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/opengl.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/opengl.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/uic.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/uic.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qmake_use.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qmake_use.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/file_copies.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/file_copies.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/testcase_targets.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/testcase_targets.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exceptions.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exceptions.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/yacc.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/yacc.prf
    DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/lex.prf
    DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/lex.prf
    ---------------------evaluateConfigFeatures()--------------------end
   DEBUG 0: done evaluateing file E:/test/t1.pro
   ---------------------QMakeEvaluator::visitProFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------end
  ---------------------QMakeEvaluator::evaluateFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------end
 ---------------------QMakeProject::read(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)----------end
 
 ---------------------MetaMakefileGenerator::createMetaGenerator()----------------------start   generate makefiles and vs.proj and so on
  ---------------------BuildsMetaMakefileGenerator::BuildsMetaMakefileGenerator()--------------------------------start end
  ---------------------BuildsMetaMakefileGenerator::init()------------------------start
   ---------------------BuildsMetaMakefileGenerator::processBuild(debug)----------------start   generate Makefile.DEBUG
    ---------------------QMakeProject::read()------------------------------------------start
     ---------------------QMakeEvaluator::evaluateFile(t1.pro)------------------------------start
     DEBUG 0: evaluateing file E:/test/t1.pro
      ---------------------QMakeEvaluator::visitProFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------start
       ---------------------evaluateCommand()  (process command input early_State  )------------------------start end
       ---------------------applyExtraConfigs()-------------------------------------------------------------start end
       ---------------------evaluateFeatureFile(default_pre.prf)------------------------------------------------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
       ---------------------evaluateFeatureFile(default_pre.prf)-------------------------------------------------end
       ---------------------evaluateCommand()  (process command input before_State)-------------------------start end
       ---------------------applyExtraConfigs()----------------------------------------------------------------start end
       ---------------------visitProBlock(t1.pro)-------------------------------------------------------------start
        ---------------------parse and evaluate codes in t1.pro, and evaluate includeing pri/pro/prf if any-------------start end
       Project MESSAGE:CONFIG = lex yacc debug exceptions depend_includepath testcase_targets import_plugins import_qpa_plugin windows file_copies qmake_use qt warn_on release link_prl flat debug_and_release debug_and_release_target precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe shared release no_plugin_manifest win32 msvc copy_dir_files debug DebugBuild Debug build_pass c++11 win32-msvc2015 debug qml_debug debug DebugBuild Debug build_pass c++11 console
       ---------------------visitProBlock(t1.pro)-----------------------------end
       ---------------------evaluateCommand()  (process command input after_State)--------------------------start end
       ---------------------applyExtraConfigs()--------------------------------------------------------------start end
       ---------------------evaluateFeatureFile(default_post.prf)----------------------------------------------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
       ---------------------evaluateFeatureFile(default_post.prf)--------------------------------------------end
       ---------------------evaluateCommand()  (process command input late_State)--------------------------start end
       ---------------------evaluateConfigFeatures()(process CONFIG feature files,will make the file name,and find the file in the dir have been used in upper process)--------------------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/build_pass.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/build_pass.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/console.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/console.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qml_debug.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qml_debug.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/precompile_header.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/precompile_header.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/warn_on.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/warn_on.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resources.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resources.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/moc.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/moc.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/opengl.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/opengl.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/uic.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/uic.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qmake_use.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qmake_use.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/file_copies.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/file_copies.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/testcase_targets.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/testcase_targets.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exceptions.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exceptions.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/yacc.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/yacc.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/lex.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/lex.prf
       ---------------------evaluateConfigFeatures()--------------------end
      DEBUG 0: done evaluateing file E:/test/t1.pro
      ---------------------QMakeEvaluator::visitProFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------end
     ---------------------QMakeEvaluator::evaluateFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------end
    ---------------------QMakeProject::read()------------------------------------------end
    ---------------------MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)------start
     ---------------------NmakeMakefileGenerator::NmakeMakefileGenerator()-----------------------------start end
     ---------------------MakefileGenerator::setProjectFile()--------------------------------------start
      ---------------------NmakeMakefileGenerator::init()-------------------------------------------start
       ---------------------MakefileGenerator::init()------------------------------------------------start end
      ---------------------NmakeMakefileGenerator::init()-------------------------------------------end
      ---------------------Win32MakefileGenerator::findLibraries()----------------------------------start
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Widgetsd.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Widgetsd.prl
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Guid.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Guid.prl
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Networkd.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Networkd.prl
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Cored.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Cored.prl
      ---------------------Win32MakefileGenerator::findLibraries()----------------------------------end
     ---------------------MakefileGenerator::setProjectFile()--------------------------------------end
    ---------------------MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)------end
   ---------------------BuildsMetaMakefileGenerator::processBuild(debug)----------------end
  
   ---------------------BuildsMetaMakefileGenerator::processBuild(release)----------------start
    ---------------------QMakeProject::read()------------------------------------------start
     ---------------------QMakeEvaluator::evaluateFile(t1.pro)------------------------------start
     DEBUG 0: evaluateing file E:/test/t1.pro
      ---------------------QMakeEvaluator::visitProFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------start
       ---------------------evaluateCommand()  (process command input early_State  )--------------  start end
       ---------------------applyExtraConfigs()-------------------------------------------start end
       ---------------------evaluateFeatureFile(default_pre.prf)--------------------------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
       ---------------------evaluateFeatureFile(default_pre.prf)-------------------------------end
       ---------------------evaluateCommand()  (process command input before_State)--------------start end
       ---------------------applyExtraConfigs()--------------start end
       ---------------------visitProBlock(t1.pro)-----------------------------start
       Project MESSAGE: lex yacc debug exceptions depend_includepath testcase_targets import_plugins import_qpa_plugin windows file_copies qmake_use qt warn_on release link_prl flat debug_and_release debug_and_release_target precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe shared release no_plugin_manifest win32 msvc copy_dir_files release ReleaseBuild Release build_pass c++11 win32-msvc2015 debug qml_debug release ReleaseBuild Release build_pass c++11 console
       ---------------------visitProBlock(t1.pro)-----------------------------end
       ---------------------evaluateCommand()  (process command input after_State)--------------start end
       ---------------------applyExtraConfigs()----------------------------------------------------start end
       ---------------------evaluateFeatureFile(default_post.prf)-------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
       ---------------------evaluateFeatureFile(default_post.prf)-------end
       ---------------------evaluateCommand()  (process command input late_State)-------------- start end
       ---------------------evaluateConfigFeatures()(process CONFIG feature files,will make the file name,and find the file in the dir have been used in upper process)--------------------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/build_pass.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/build_pass.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/console.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/console.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qml_debug.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qml_debug.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/precompile_header.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/precompile_header.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/warn_on.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/warn_on.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qt.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resources.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resources.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/moc.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/moc.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/opengl.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/opengl.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/uic.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/uic.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qmake_use.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/qmake_use.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/file_copies.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/file_copies.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/testcase_targets.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/testcase_targets.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exceptions.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exceptions.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/yacc.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/yacc.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/lex.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/lex.prf
       ---------------------evaluateConfigFeatures()--------------------end
       DEBUG 0: done evaluateing file E:/test/t1.pro
      ---------------------QMakeEvaluator::visitProFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------end
     ---------------------QMakeEvaluator::evaluateFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------end
    ---------------------QMakeProject::read()------------------------------------------end
    ---------------------MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)------start
     ---------------------NmakeMakefileGenerator::NmakeMakefileGenerator()-----------------------------start end
     ---------------------MakefileGenerator::setProjectFile()--------------------------------------start
      ---------------------NmakeMakefileGenerator::init()-------------------------------------------start
       ---------------------MakefileGenerator::init()------------------------------------------------start end
      ---------------------NmakeMakefileGenerator::init()-------------------------------------------end
      ---------------------Win32MakefileGenerator::findLibraries()----------------------------------start
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Widgets.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Widgets.prl
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Gui.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Gui.prl
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Network.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Network.prl
      DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Core.prl
      DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Core.prl
      ---------------------Win32MakefileGenerator::findLibraries()----------------------------------end
     ---------------------MakefileGenerator::setProjectFile()--------------------------------------end
    ---------------------MetaMakefileGenerator::createMakefileGenerator(QMakeProject *proj, bool noIO)------end
   ---------------------BuildsMetaMakefileGenerator::processBuild(release)----------------end
  ---------------------BuildsMetaMakefileGenerator::init()------------------------end
 ---------------------MetaMakefileGenerator::createMetaGenerator()----------------------end
 ---------------------BuildsMetaMakefileGenerator::write()------将解析的内容写入makefile文件---start end
---------------------runQMake(int argc, char **argv)---------------------------------------------------end

工程pro文件的解析所能从中获取变量名的配置文件,及通过命令行输入参数的作用时效(early、before、after、late)如下,(需要注意的是applyExtraConfigs设置的configs是由配置文件自动产生的,命令行设置的config在evaluatecommand的时候设置的):

---------------------QMakeEvaluator::evaluateFile(t1.pro)------------------------------start
     DEBUG 0: evaluateing file E:/test/t1.pro
      ---------------------QMakeEvaluator::visitProFile(t1.pro,...LoadFlags=LoadPreFiles|LoadPostFiles)------start
       ---------------------evaluateCommand()  (process command input early_State  )------------------------start end
       ---------------------applyExtraConfigs()-------------------------------------------------------------start end
       ---------------------evaluateFeatureFile(default_pre.prf)------------------------------------------------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/common/msvc-version.conf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/toolchain.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_pre.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/win32/default_pre.prf
       ---------------------evaluateFeatureFile(default_pre.prf)-------------------------------------------------end
       ---------------------evaluateCommand()  (process command input before_State)-------------------------start end
       ---------------------applyExtraConfigs()----------------------------------------------------------------start end
       ---------------------visitProBlock(t1.pro)  该函数解析t1.pro中的语句。如果有load或者include,则按照调用顺序进入到对应文件中去---start
        ---------------------parse and evaluate codes in t1.pro, and evaluate includeing pri/pro/prf if any-------------start end
       Project MESSAGE:CONFIG = lex yacc debug exceptions depend_includepath testcase_targets import_plugins import_qpa_plugin windows file_copies qmake_use qt warn_on release link_prl flat debug_and_release debug_and_release_target precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe shared release no_plugin_manifest win32 msvc copy_dir_files debug DebugBuild Debug build_pass c++11 win32-msvc2015 debug qml_debug debug DebugBuild Debug build_pass c++11 console
       ---------------------visitProBlock(t1.pro)-----------------------------end
       ---------------------evaluateCommand()  (process command input after_State)--------------------------start end
       ---------------------applyExtraConfigs()--------------------------------------------------------------start end
       ---------------------evaluateFeatureFile(default_post.prf)----------------------------------------------start
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/resolve_config.prf
       DEBUG 0: evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/exclusive_builds_post.prf
       DEBUG 0: done evaluateing file D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/mkspecs/features/default_post.prf
       ---------------------evaluateFeatureFile(default_post.prf)--------------------------------------------end
       ---------------------evaluateCommand()  (process command input late_State)--------------------------start end

qmake解析调用的单个qt模块Qt5Widgets的配置文件D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Widgetsd.prl的堆栈

 D:/Qt/Qt5.12.0/5.12.0/msvc2015_64/lib/Qt5Widgetsd.prl文件内容


QMAKE_PRO_INPUT = widgets.pro
QMAKE_PRL_TARGET = Qt5Widgetsd.lib
QMAKE_PRL_CONFIG = lex yacc debug depend_includepath testcase_targets import_plugins import_qpa_plugin windows qt_build_extra file_copies qmake_use qt warn_on link_prl flat debug_and_release precompile_header autogen_precompile_source embed_manifest_dll embed_manifest_exe shared no_plugin_manifest win32 msvc copy_dir_files sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 compile_examples f16c force_debug_info largefile precompile_header rdrnd shani x86SimdAlways prefix_build force_independent utf8_source create_prl link_prl prepare_docs qt_docs_targets no_private_qt_headers_warning QTDIR_build qt_example_installs exceptions_off testcase_exceptions warning_clean debug DebugBuild Debug build_pass c++11 win32-msvc2015 uic qt_tracepoints generated_privates relative_qt_rpath git_build qmake_cache target_qt c++11 strict_c++ qt_install_headers need_fwd_pri qt_install_module debug_and_release build_all create_cmake skip_target_version_ext debug DebugBuild Debug build_pass have_target dll no_plist exclusive_builds debug_info no_autoqmake thread opengl moc resources
QMAKE_PRL_VERSION = 5.12.0

qmake 将解析内容写入makefile时会调用到moc.prf中的函数,发生在write过程中,参考:qtcreator编译qt程序是如何调用moc的,如何通过pro文件向moc传入参数_丘上人的博客-CSDN博客

qmake language 关键字 true false host_build option return next break ever forever  
qmake对一个简单的pro文件(t.pro)的解析日志_丘上人的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40306.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022-11-27阿里云物联网平台 MICROPYTHON记录

之前写过EMQX在阿里云的云服务器上搭建流程&#xff0c;近期云服务器到期了&#xff0c;而且由于没有业务支撑短期也不打算再开云服务器了&#xff0c;但是物联网还是要用的&#xff0c;于是开了这个阿里云物联网的记录。 这个是比较详细的已有的博客记录 这个博客居然还有配套…

从ABNF读懂HTTP协议格式

定义 HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;超文本传输协议 HTML&#xff08; Hyper Text Markup Language&#xff09;超文本标记语言 URI&#xff08;Uniform Resource Identifier&#xff09;用于标识某一互联网资源名称的字符串&#xff08;uri 包括了…

自动控制原理1~3章课后练习题

1.适合于应用传递函数描述的系统是线性定常系统 2.某0型单位反馈系统的开环增益为K&#xff0c;则在 r(t)1/2*t^2 输入下&#xff0c;系统的稳态误差为 无穷 3.动态系统 0 初始条件是指 t<0 时系统的 输入、输出以及它们的各阶导数为 0 4.若二阶系统处于无阻尼状态&#…

毕业设计-opencv图像视频质量评价分析

目录 前言 课题背景和意义 实现技术思路 实现效果图样例 前言 &#x1f4c5;大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科…

二级域名配置以及nginx解析二级域名到html页面

此文章适合发布前端项目使用&#xff0c;如果想要配置二级域名到后端服务&#xff0c;可以查看这篇文章&#xff1a;nginx配置二级域名 - 简书 在阿里云上配置二级域名&#xff0c;就是添加一条记录就可以了&#xff0c;超级简单&#xff0c;不懂的可以看后面的解释说明&#…

05.深入理解JMM和Happens-Before

JMM都问啥&#xff1f; 最近沉迷P5R&#xff0c;所以写作的进度很不理想&#xff0c;但不得不说高卷杏YYDS。话不多说&#xff0c;开始今天的主题&#xff0c;JMM和Happens-Before。 关于它们的问题并不多&#xff0c;基本上只有两个&#xff1a; JMM是什么&#xff1f;详细…

[附源码]计算机毕业设计JAVA社团管理系统

[附源码]计算机毕业设计JAVA社团管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis M…

c语言实现三子棋

目录 一、三子棋玩法 二、需要实现的游戏功能 三、拆分代码 3.1游戏菜单 3.2初始化棋盘 3.2.1函数调用 3.2.2函数体实现 3.3打印棋盘 3.3.1函数调用 3.3.2函数体实现 3.4玩家下棋 3.4.1函数调用 3.4.2函数体实现 3.4.3效果展示 3.5电脑下棋 3.5.1函数调用 3.5…

强大博客搭建全过程(1)-hexo博客搭建保姆级教程

1、 前言 本人本来使用国内的开源项目solo搭建了博客&#xff0c;但感觉1核CPU2G内存的服务器&#xff0c;还是稍微有点重&#xff0c;包括服务器内还搭建了数据库。如果自己开发然后搭建&#xff0c;耗费时间又比较多&#xff0c;于是乎开始寻找轻量型的博客系统。 此时hexo…

苹果系统(macos)code with me 控制端下载不下来,下载缓慢,解决办法

jetbrains的插件,依赖包,或者是工具之类的下载通常都比较慢,尤其是大文件等很久后可能还断开了.又要重头下.比如 code with me,以下简称cwm curl: (56) Recv failure: Connection reset by peer 如果你曾用sh安装时提示这个,多数就是网络连接不行了. 简单说就是用下载工具下…

redis集群搭建教程及遇到的问题处理

这里&#xff0c;在一个Linux虚拟机上搭建6个节点的redis伪集群&#xff0c;思路很简单&#xff0c;一台虚拟机上开启6个redis实例&#xff0c;每个redis实例有自己的端口。这样的话&#xff0c;相当于模拟出了6台机器了&#xff0c;然后在以这6个实例组建redis集群就可以了。 …

jsp旅行社管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 旅行社管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5 开发&#xff0c;数据库为Mysql&#xff0c;使用…

JAVA之Spring MVC 请求与响应 REST风格 SSM整合(注解版)

SpringMVC是一种基于Java实现MVC模型的轻量级Web框架 使用简单&#xff0c;开发便捷&#xff08;相比于Servlet&#xff09; 灵活性强 入门案例 导入依赖SpringMVC坐标 <dependency><groupId>org.springframework</groupId><artifactId>spring-web…

[附源码]计算机毕业设计JAVA实践教学管理系统

[附源码]计算机毕业设计JAVA实践教学管理系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybati…

01 使用docker搭建wordpress博客网站

文章目录1. 前言1.1 容器技术思维导图1.2 wordpress 网络架构图2. 拉取镜像3. 搭建博客网站3.1 启动MariaDB3.2 运行应用服务器 WordPress3.3 使用nginx 做反向代理3.4 检查容器状态4. 登录博客配置5 查看数据库1. 前言 基于之前学习kubernetes 比较乱&#xff0c;打算重新学习…

机器学习笔记 十九:由浅入深的随机森林模型之分类

随机森林学习内容1. 集成学习2.sklearn中的集成算法2.1 sklearn中的集成算法模块ensemble2.2 RandomForestClassifier2.2.1 参数2.2.2 n_estimators2.2.3 random_state2.2.4 bootstrap & oob_score2.3 随机森林的重要接口2.4 Bonus&#xff08;装袋法的必要条件&#xff09…

【指针详解】(上)看一遍就会❗❗❗家人们冲❗

前言 ❤️ 铁汁们大家好&#xff0c;欢迎大家来到出小月的博客里&#xff0c; &#x1f917;&#x1f917;&#x1f917;之前呢&#xff0c;我分享了C语言的小游戏“扫雷”。。。。今天呢&#xff0c;给大家分享指针篇&#xff0c;&#xff0c;希望大家看完我这篇文章都能够“涨…

Java Tomcat内存马——Servlet内存马

目录 前言&#xff1a; &#xff08;一&#xff09;Servlet的创建 1、实现javax.servlet.Servlet接口的方式 2、继承GenericServlet类创建Servlet 3、继承了HttpServlet进行创建 &#xff08;二&#xff09;分析注入方式 代码分析 (三&#xff09;payload 1、StandardC…

阿里云OSS、用户认证与就诊人

oss 模块搭建与实现 这里采用的方式是通过后端传 oss&#xff0c;可以对比下 谷粒商城里面的&#xff0c;从后端拿上传凭证&#xff0c;然后前端直传的方式 <dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId> <…

数字化管理门店| 甜品店管理系统

对不少女生来说&#xff0c;甜品店绝对算是经常去的地方&#xff0c;尤其出新品的时候&#xff0c;就如奶茶店一样在排队&#xff0c;在武汉一家足球场的旁边&#xff0c;有一家“甜如箭丘”品牌门店&#xff0c;整体环境装修的非常附有文艺感&#xff0c;明亮的店堂&#xff0…