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

📄 unixmake2.cpp

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
        if(!project->isActiveConfig("plugin") || !project->isActiveConfig("plugin_no_share_shlib_cflags")) {            project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_SHLIB"];            project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_SHLIB"];        }        if (project->isActiveConfig("plugin")) {            project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_PLUGIN"];            project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_PLUGIN"];            project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_PLUGIN"];            if(project->isActiveConfig("plugin_with_soname") && !project->isActiveConfig("compile_libtool"))                project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_SONAME"];        } else {            project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_SHLIB"];            if(!project->isEmpty("QMAKE_LFLAGS_COMPAT_VERSION")) {                if(project->isEmpty("COMPAT_VERSION"))                    project->variables()["QMAKE_LFLAGS"] += QString(project->first("QMAKE_LFLAGS_COMPAT_VERSION") +                                                                    project->first("VER_MAJ") + "." +                                                                    project->first("VER_MIN"));                else                    project->variables()["QMAKE_LFLAGS"] += QString(project->first("QMAKE_LFLAGS_COMPAT_VERSION") +                                                                    project->first("COMPATIBILITY_VERSION"));            }            if(!project->isEmpty("QMAKE_LFLAGS_VERSION")) {                project->variables()["QMAKE_LFLAGS"] += QString(project->first("QMAKE_LFLAGS_VERSION") +                                                                project->first("VER_MAJ") + "." +                                                                project->first("VER_MIN") + "." +                                                                project->first("VER_PAT"));            }            if(!project->isActiveConfig("compile_libtool"))                project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_SONAME"];        }    }    if(!project->isEmpty("QMAKE_BUNDLE_NAME")) {        QString plist = fileFixify(project->first("QMAKE_INFO_PLIST"));        if(plist.isEmpty())            plist = specdir() + QDir::separator() + "Info.plist." + project->first("TEMPLATE");        if(exists(Option::fixPathToLocalOS(plist))) {            if(project->isEmpty("QMAKE_INFO_PLIST"))                project->variables()["QMAKE_INFO_PLIST"].append(plist);            project->variables()["QMAKE_INFO_PLIST_OUT"].append(project->first("DESTDIR") +                                                                project->first("QMAKE_BUNDLE_NAME") +                                                                "/Contents/Info.plist");            project->variables()["ALL_DEPS"] += project->first("QMAKE_INFO_PLIST_OUT");            if(!project->isEmpty("ICON") && project->first("TEMPLATE") == "app")                project->variables()["ALL_DEPS"] += project->first("DESTDIR") +                                                    project->first("QMAKE_BUNDLE_NAME") +                                                    "/Contents/Resources/" + project->first("ICON").section('/', -1);            if(!project->isEmpty("QMAKE_BUNDLE_DATA")) {                QString bundle_dir = project->first("DESTDIR") + project->first("QMAKE_BUNDLE_NAME") + "/";                QStringList &alldeps = project->variables()["ALL_DEPS"];                const QStringList &bundle_data = project->variables()["QMAKE_BUNDLE_DATA"];                for(int i = 0; i < bundle_data.count(); i++) {                    const QStringList &files = project->variables()[bundle_data[i] + ".files"];                    QString path = bundle_dir;                    if(!project->isEmpty(bundle_data[i] + ".version")) {                        alldeps += Option::fixPathToLocalOS(path + Option::dir_sep +                                                            project->first(bundle_data[i] + ".path"));                        path += project->first(bundle_data[i] + ".version") + "/" +                                project->first("QMAKE_FRAMEWORK_VERSION") + "/";                    }                    path += project->first(bundle_data[i] + ".path");                    path = Option::fixPathToLocalOS(path);                    for(int file = 0; file < files.count(); file++)                        alldeps += path + Option::dir_sep + fileInfo(files[file]).fileName();                }            }        }    }}QStringUnixMakefileGenerator::libtoolFileName(){    QString ret = var("TARGET");    int slsh = ret.lastIndexOf(Option::dir_sep);    if(slsh != -1)        ret = ret.right(ret.length() - slsh - 1);    int dot = ret.indexOf('.');    if(dot != -1)        ret = ret.left(dot);    ret += Option::libtool_ext;    if(!project->isEmpty("DESTDIR")) {        ret.prepend(var("DESTDIR"));        ret = Option::fixPathToLocalOS(fileFixify(ret, qmake_getpwd(), Option::output_dir));    }    return ret;}voidUnixMakefileGenerator::writeLibtoolFile(){    QString fname = libtoolFileName(), lname = fname;    int slsh = lname.lastIndexOf(Option::dir_sep);    if(slsh != -1)        lname = lname.right(lname.length() - slsh - 1);    QFile ft(fname);    if(!ft.open(QIODevice::WriteOnly))        return;    project->variables()["ALL_DEPS"].append(fileFixify(fname));    QTextStream t(&ft);    t << "# " << lname << " - a libtool library file\n";    t << "# Generated by qmake/libtool (" << qmake_version() << ") (Qt "      << QT_VERSION_STR << ") on: " << QDateTime::currentDateTime().toString();	t << "\n";    t << "# The name that we can dlopen(3).\n"      << "dlname='" << var(project->isActiveConfig("plugin") ? "TARGET" : "TARGET_x")      << "'\n\n";    t << "# Names of this library.\n";    t << "library_names='";    if(project->isActiveConfig("plugin")) {        t << var("TARGET");    } else {        if (project->isEmpty("QMAKE_HPUX_SHLIB"))            t << var("TARGET_x.y.z") << " ";        t << var("TARGET_x") << " " << var("TARGET_");    }    t << "'\n\n";    t << "# The name of the static archive.\n"      << "old_library='" << lname.left(lname.length()-Option::libtool_ext.length()) << ".a'\n\n";    t << "# Libraries that this one depends upon.\n";    QStringList libs;    if(!project->isEmpty("QMAKE_INTERNAL_PRL_LIBS"))        libs = project->variables()["QMAKE_INTERNAL_PRL_LIBS"];    else        libs << "QMAKE_LIBS"; //obvious one    t << "dependency_libs='";    for(QStringList::ConstIterator it = libs.begin(); it != libs.end(); ++it)        t << project->variables()[(*it)].join(" ") << " ";    t << "'\n\n";    t << "# Version information for " << lname << "\n";    int maj = project->first("VER_MAJ").toInt();    int min = project->first("VER_MIN").toInt();    int pat = project->first("VER_PAT").toInt();    t << "current=" << (10*maj + min) << "\n" // best I can think of      << "age=0\n"      << "revision=" << pat << "\n\n";    t << "# Is this an already installed library.\n"        "installed=yes\n\n"; // ###    t << "# Files to dlopen/dlpreopen.\n"        "dlopen=''\n"        "dlpreopen=''\n\n";    QString install_dir = project->first("target.path");    if(install_dir.isEmpty())        install_dir = project->first("DESTDIR");    t << "# Directory that this library needs to be installed in:\n"        "libdir='" << Option::fixPathToTargetOS(install_dir, false) << "'\n";}QStringUnixMakefileGenerator::pkgConfigFileName(){    QString ret = var("TARGET");    int slsh = ret.lastIndexOf(Option::dir_sep);    if(slsh != -1)        ret = ret.right(ret.length() - slsh - 1);    if(ret.startsWith("lib"))        ret = ret.mid(3);    int dot = ret.indexOf('.');    if(dot != -1)        ret = ret.left(dot);    ret += Option::pkgcfg_ext;    if(!project->isEmpty("DESTDIR")) {        ret.prepend(var("DESTDIR"));        ret = Option::fixPathToLocalOS(fileFixify(ret, qmake_getpwd(), Option::output_dir));    }    return ret;}QStringUnixMakefileGenerator::pkgConfigPrefix() const{    if(!project->isEmpty("QMAKE_PKGCONFIG_PREFIX"))        return project->first("QMAKE_PKGCONFIG_PREFIX");    return QLibraryInfo::location(QLibraryInfo::PrefixPath);}QStringUnixMakefileGenerator::pkgConfigFixPath(QString path) const{    QString prefix = pkgConfigPrefix();    if(path.startsWith(prefix))        path = path.replace(prefix, "${prefix}");    return path;}voidUnixMakefileGenerator::writePkgConfigFile()     // ### does make sense only for libqt so far{    QString fname = pkgConfigFileName(), lname = fname;    int slsh = lname.lastIndexOf(Option::dir_sep);    if(slsh != -1)        lname = lname.right(lname.length() - slsh - 1);    QFile ft(fname);    if(!ft.open(QIODevice::WriteOnly))        return;    project->variables()["ALL_DEPS"].append(fileFixify(fname));    QTextStream t(&ft);    QString prefix = pkgConfigPrefix();    QString libDir = project->first("QMAKE_PKGCONFIG_LIBDIR");    if(libDir.isEmpty())        libDir = prefix + Option::dir_sep + "lib" + Option::dir_sep;    QString includeDir = project->first("QMAKE_PKGCONFIG_INCDIR");    if(includeDir.isEmpty())        includeDir = prefix + "/include";    t << "prefix=" << prefix << endl;    t << "exec_prefix=${prefix}\n"      << "libdir=" << pkgConfigFixPath(libDir) << "\n"      << "includedir=" << pkgConfigFixPath(includeDir) << endl;    // non-standard entry. Provides useful info normally only    // contained in the internal .qmake.cache file    t << varGlue("CONFIG", "qt_config=", " ", "") << endl << endl;    QString name = project->first("QMAKE_PKGCONFIG_NAME");    if(name.isEmpty()) {        name = project->first("QMAKE_ORIG_TARGET").toLower();        name.replace(0, 1, name[0].toUpper());    }    t << "Name: " << name << endl;    QString desc = project->variables()["QMAKE_PKGCONFIG_DESCRIPTION"].join(" ");    if(desc.isEmpty()) {        if(name.isEmpty()) {            desc = project->first("QMAKE_ORIG_TARGET").toLower();            desc.replace(0, 1, desc[0].toUpper());        } else {            desc = name;        }        if(project->first("TEMPLATE") == "lib") {            if(project->isActiveConfig("plugin"))               desc += " Plugin";            else               desc += " Library";        } else if(project->first("TEMPLATE") == "app") {            desc += " Application";        }    }    t << "Description: " << desc << endl;    t << "Version: " << project->first("VERSION") << endl;    // libs    QStringList libs;    if(!project->isEmpty("QMAKE_INTERNAL_PRL_LIBS"))        libs = pro

⌨️ 快捷键说明

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