⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msvc_vcproj.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 5 页
字号:
    conf.compiler.AssemblerListingLocation = placement ;    conf.compiler.ProgramDataBaseFileName = ".\\" ;    conf.compiler.ObjectFile = placement ;    // PCH    if (usePCH) {        conf.compiler.UsePrecompiledHeader     = pchUseUsingSpecific;        conf.compiler.PrecompiledHeaderFile    = "$(IntDir)\\" + precompPch;        conf.compiler.PrecompiledHeaderThrough = project->first("PRECOMPILED_HEADER");        conf.compiler.ForcedIncludeFiles       = project->values("PRECOMPILED_HEADER");        // Minimal build option triggers an Internal Compiler Error        // when used in conjunction with /FI and /Yu, so remove it        project->values("QMAKE_CFLAGS_DEBUG").removeAll("-Gm");        project->values("QMAKE_CFLAGS_DEBUG").removeAll("/Gm");        project->values("QMAKE_CXXFLAGS_DEBUG").removeAll("-Gm");        project->values("QMAKE_CXXFLAGS_DEBUG").removeAll("/Gm");    }    conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS"));    if(project->isActiveConfig("debug")){        // Debug version        conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS"));        conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_DEBUG"));        if((projectTarget == Application) || (projectTarget == StaticLib))            conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_MT_DBG"));        else            conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_MT_DLLDBG"));    } else {        // Release version        conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS"));        conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_RELEASE"));        conf.compiler.PreprocessorDefinitions += "QT_NO_DEBUG";        conf.compiler.PreprocessorDefinitions += "NDEBUG";        if((projectTarget == Application) || (projectTarget == StaticLib))            conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_MT"));        else            conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_MT_DLL"));    }    // Common for both release and debug    if(project->isActiveConfig("warn_off"))        conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_WARN_OFF"));    else if(project->isActiveConfig("warn_on"))        conf.compiler.parseOptions(project->values("QMAKE_CXXFLAGS_WARN_ON"));    if(project->isActiveConfig("windows"))        conf.compiler.PreprocessorDefinitions += project->values("MSVCPROJ_WINCONDEF");    // Can this be set for ALL configs?    // If so, use qmake.conf!    if(projectTarget == SharedLib)        conf.compiler.PreprocessorDefinitions += "_WINDOWS";    conf.compiler.PreprocessorDefinitions += project->values("DEFINES");    conf.compiler.PreprocessorDefinitions += project->values("PRL_EXPORT_DEFINES");    conf.compiler.parseOptions(project->values("MSVCPROJ_INCPATH"));}void VcprojGenerator::initLibrarianTool(){    VCConfiguration &conf = vcProject.Configuration;    conf.librarian.OutputFile = project->first("DESTDIR");    if(conf.librarian.OutputFile.isEmpty())        conf.librarian.OutputFile = ".\\";    if(!conf.librarian.OutputFile.endsWith("\\"))        conf.librarian.OutputFile += '\\';    conf.librarian.OutputFile += project->first("MSVCPROJ_TARGET");}void VcprojGenerator::initLinkerTool(){    findLibraries(); // Need to add the highest version of the libs    VCConfiguration &conf = vcProject.Configuration;    conf.linker.parseOptions(project->values("MSVCPROJ_LFLAGS"));    foreach(QString libs, project->values("MSVCPROJ_LIBS")) {        if (libs.left(9).toUpper() == "/LIBPATH:") {            QStringList l = QStringList(libs);            conf.linker.parseOptions(l);        } else {            conf.linker.AdditionalDependencies += libs;        }    }    switch (projectTarget) {    case Application:        conf.linker.OutputFile = project->first("DESTDIR");        break;    case SharedLib:        conf.linker.parseOptions(project->values("MSVCPROJ_LIBOPTIONS"));        conf.linker.OutputFile = project->first("DESTDIR");        break;    case StaticLib: //unhandled - added to remove warnings..        break;    }    if(conf.linker.OutputFile.isEmpty())        conf.linker.OutputFile = ".\\";    if(!conf.linker.OutputFile.endsWith("\\"))        conf.linker.OutputFile += '\\';    conf.linker.OutputFile += project->first("MSVCPROJ_TARGET");    if(project->isActiveConfig("debug")){        conf.linker.parseOptions(project->values("QMAKE_LFLAGS_DEBUG"));    } else {        conf.linker.parseOptions(project->values("QMAKE_LFLAGS_RELEASE"));    }    if(project->isActiveConfig("dll")){        conf.linker.parseOptions(project->values("QMAKE_LFLAGS_QT_DLL"));    }    if(project->isActiveConfig("console")){        conf.linker.parseOptions(project->values("QMAKE_LFLAGS_CONSOLE"));    } else {        conf.linker.parseOptions(project->values("QMAKE_LFLAGS_WINDOWS"));    }}void VcprojGenerator::initResourceTool(){    VCConfiguration &conf = vcProject.Configuration;    conf.resource.PreprocessorDefinitions = conf.compiler.PreprocessorDefinitions;    // We need to add _DEBUG for the debug version of the project, since the normal compiler defines    // do not contain it. (The compiler defines this symbol automatically, which is wy we don't need    // to add it for the compiler) However, the resource tool does not do this.    if(project->isActiveConfig("debug"))        conf.resource.PreprocessorDefinitions += "_DEBUG";}void VcprojGenerator::initIDLTool(){}void VcprojGenerator::initCustomBuildTool(){}void VcprojGenerator::initPreBuildEventTools(){}QString VcprojGenerator::fixCommandLine(DotNET version, const QString &input) const{    QString result = input;    if (version == NET2005)        result = result.replace(QLatin1Char('\n'), QLatin1String("&#x000D;&#x000A;"));    return result;}void VcprojGenerator::initPostBuildEventTools(){    VCConfiguration &conf = vcProject.Configuration;    if(!project->values("QMAKE_POST_LINK").isEmpty()) {        QString cmdline = fixCommandLine(conf.CompilerVersion, var("QMAKE_POST_LINK"));        conf.postBuild.CommandLine = cmdline;        if (conf.CompilerVersion < NET2005)            cmdline = cmdline.replace("\n", "&&");        conf.postBuild.Description = cmdline;    }    if(!project->values("MSVCPROJ_COPY_DLL").isEmpty()) {        if(!conf.postBuild.CommandLine.isEmpty())            conf.postBuild.CommandLine += " && ";        conf.postBuild.Description += var("MSVCPROJ_COPY_DLL_DESC");        conf.postBuild.CommandLine += var("MSVCPROJ_COPY_DLL");    }}void VcprojGenerator::initPreLinkEventTools(){    VCConfiguration &conf = vcProject.Configuration;    if(!project->values("QMAKE_PRE_LINK").isEmpty()) {        QString cmdline = fixCommandLine(conf.CompilerVersion, var("QMAKE_PRE_LINK"));        conf.preLink.Description = cmdline;        conf.preLink.CommandLine = cmdline;    }}void VcprojGenerator::initRootFiles(){    // Note: Root files do _not_ have any filter name, filter nor GUID!    vcProject.RootFiles.addFiles(project->values("RC_FILE"));    vcProject.RootFiles.Project = this;    vcProject.RootFiles.Config = &(vcProject.Configuration);    vcProject.RootFiles.CustomBuild = none;}void VcprojGenerator::initSourceFiles(){    vcProject.SourceFiles.Name = "Source Files";    vcProject.SourceFiles.Filter = "cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx";    vcProject.SourceFiles.Guid = _GUIDSourceFiles;    vcProject.SourceFiles.addFiles(project->values("SOURCES"));    vcProject.SourceFiles.Project = this;    vcProject.SourceFiles.Config = &(vcProject.Configuration);    vcProject.SourceFiles.CustomBuild = none;}void VcprojGenerator::initHeaderFiles(){    vcProject.HeaderFiles.Name = "Header Files";    vcProject.HeaderFiles.Filter = "h;hpp;hxx;hm;inl;inc;xsd";    vcProject.HeaderFiles.Guid = _GUIDHeaderFiles;    vcProject.HeaderFiles.addFiles(project->values("HEADERS"));    if (usePCH) // Generated PCH cpp file        vcProject.HeaderFiles.addFile(precompH);    vcProject.HeaderFiles.Project = this;    vcProject.HeaderFiles.Config = &(vcProject.Configuration);//    vcProject.HeaderFiles.CustomBuild = mocHdr;//    addMocArguments(vcProject.HeaderFiles);}void VcprojGenerator::initGeneratedFiles(){    vcProject.GeneratedFiles.Name = "Generated Files";    vcProject.GeneratedFiles.Filter = "cpp;c;cxx;moc;h;def;odl;idl;res;";    vcProject.GeneratedFiles.Guid = _GUIDGeneratedFiles;    // ### These cannot have CustomBuild (mocSrc)!!    vcProject.GeneratedFiles.addFiles(project->values("GENERATED_SOURCES"));    vcProject.GeneratedFiles.addFiles(project->values("GENERATED_FILES"));    vcProject.GeneratedFiles.addFiles(project->values("IDLSOURCES"));    vcProject.GeneratedFiles.addFiles(project->values("RES_FILE"));    vcProject.GeneratedFiles.addFiles(project->values("QMAKE_IMAGE_COLLECTION"));   // compat    if(!extraCompilerOutputs.isEmpty())        vcProject.GeneratedFiles.addFiles(extraCompilerOutputs.keys());    vcProject.GeneratedFiles.Project = this;    vcProject.GeneratedFiles.Config = &(vcProject.Configuration);//    vcProject.GeneratedFiles.CustomBuild = mocSrc;}void VcprojGenerator::initLexYaccFiles(){    vcProject.LexYaccFiles.Name = "Lex / Yacc Files";    vcProject.LexYaccFiles.ParseFiles = _False;    vcProject.LexYaccFiles.Filter = "l;y";    vcProject.LexYaccFiles.Guid = _GUIDLexYaccFiles;    vcProject.LexYaccFiles.addFiles(project->values("LEXSOURCES"));    vcProject.LexYaccFiles.addFiles(project->values("YACCSOURCES"));    vcProject.LexYaccFiles.Project = this;    vcProject.LexYaccFiles.Config = &(vcProject.Configuration);    vcProject.LexYaccFiles.CustomBuild = lexyacc;}void VcprojGenerator::initTranslationFiles(){    vcProject.TranslationFiles.Name = "Translation Files";    vcProject.TranslationFiles.ParseFiles = _False;    vcProject.TranslationFiles.Filter = "ts";    vcProject.TranslationFiles.Guid = _GUIDTranslationFiles;    vcProject.TranslationFiles.addFiles(project->values("TRANSLATIONS"));    vcProject.TranslationFiles.Project = this;    vcProject.TranslationFiles.Config = &(vcProject.Configuration);    vcProject.TranslationFiles.CustomBuild = none;}void VcprojGenerator::initFormFiles(){    vcProject.FormFiles.Name = "Form Files";    vcProject.FormFiles.ParseFiles = _False;    vcProject.FormFiles.Filter = "ui";    vcProject.FormFiles.Guid = _GUIDFormFiles;    vcProject.FormFiles.addFiles(project->values("FORMS"));    vcProject.FormFiles.addFiles(project->values("FORMS3"));    vcProject.FormFiles.Project = this;    vcProject.FormFiles.Config = &(vcProject.Configuration);    vcProject.FormFiles.CustomBuild = none;}void VcprojGenerator::initResourceFiles(){    vcProject.ResourceFiles.Name = "Resource Files";    vcProject.ResourceFiles.ParseFiles = _False;    vcProject.ResourceFiles.Filter = "qrc;*"; //"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;ts;qrc";    vcProject.ResourceFiles.Guid = _GUIDResourceFiles;    // Bad hack, please look away -------------------------------------    QString rcc_dep_cmd = project->values("rcc.depend_command").join(" ");    if(!rcc_dep_cmd.isEmpty()) {        QStringList qrc_files = project->values("RESOURCES");        QStringList deps;        if(!qrc_files.isEmpty()) {            for (int i = 0; i < qrc_files.count(); ++i) {                char buff[256];                QString dep_cmd = replaceExtraCompilerVariables(rcc_dep_cmd, qrc_files.at(i),"");                dep_cmd = Option::fixPathToLocalOS(dep_cmd, true, false);                if(canExecute(dep_cmd)) {                    if(FILE *proc = QT_POPEN(dep_cmd.toLatin1().constData(), "r")) {        	        QString indeps;                        while(!feof(proc)) {                            int read_in = (int)fread(buff, 1, 255, proc);                            if(!read_in)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -