📄 unixmake2.cpp
字号:
project->first("QMAKE_FRAMEWORK_VERSION") + bundle_loc + unescapeFilePath(project->first("TARGET"))); } else if(project->isActiveConfig("plugin")) { QString prefix; if(!project->isActiveConfig("no_plugin_name_prefix")) prefix = "lib"; project->values("TARGET_x.y.z").append(prefix + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_PLUGIN")); if(project->isActiveConfig("lib_version_first")) project->values("TARGET_x").append(prefix + project->first("TARGET") + "." + project->first("VER_MAJ") + "." + project->first("QMAKE_EXTENSION_PLUGIN")); else project->values("TARGET_x").append(prefix + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_PLUGIN") + "." + project->first("VER_MAJ")); project->values("TARGET") = project->values("TARGET_x.y.z"); } else if (!project->isEmpty("QMAKE_HPUX_SHLIB")) { project->values("TARGET_").append("lib" + project->first("TARGET") + ".sl"); if(project->isActiveConfig("lib_version_first")) project->values("TARGET_x").append("lib" + project->first("VER_MAJ") + "." + project->first("TARGET")); else project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + project->first("VER_MAJ")); project->values("TARGET") = project->values("TARGET_x"); } else if (!project->isEmpty("QMAKE_AIX_SHLIB")) { project->values("TARGET_").append("lib" + project->first("TARGET") + ".a"); if(project->isActiveConfig("lib_version_first")) { project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + project->first("VER_MAJ") + "." + project->first("QMAKE_EXTENSION_SHLIB")); project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN") + "." + project->first("QMAKE_EXTENSION_SHLIB")); project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN") + "." + project->first("VER_PAT") + "." + project->first("QMAKE_EXTENSION_SHLIB")); } else { project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_SHLIB") + "." + project->first("VER_MAJ")); project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_SHLIB") + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN")); project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_SHLIB") + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN") + "." + project->first("VER_PAT")); } project->values("TARGET") = project->values("TARGET_x.y.z"); } else { project->values("TARGET_").append("lib" + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_SHLIB")); if(project->isActiveConfig("lib_version_first")) { project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + project->first("VER_MAJ") + "." + project->first("QMAKE_EXTENSION_SHLIB")); project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN") + "." + project->first("QMAKE_EXTENSION_SHLIB")); project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN") + "." + project->first("VER_PAT") + "." + project->values("QMAKE_EXTENSION_SHLIB").first()); } else { project->values("TARGET_x").append("lib" + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_SHLIB") + "." + project->first("VER_MAJ")); project->values("TARGET_x.y").append("lib" + project->first("TARGET") + "." + project->first("QMAKE_EXTENSION_SHLIB") + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN")); project->values("TARGET_x.y.z").append("lib" + project->first("TARGET") + "." + project->values( "QMAKE_EXTENSION_SHLIB").first() + "." + project->first("VER_MAJ") + "." + project->first("VER_MIN") + "." + project->first("VER_PAT")); } project->values("TARGET") = project->values("TARGET_x.y.z"); } if(project->isEmpty("QMAKE_LN_SHLIB")) project->values("QMAKE_LN_SHLIB").append("ln -s"); if (!project->values("QMAKE_LFLAGS_SONAME").isEmpty()) { QString soname; if(project->isActiveConfig("plugin")) { if(!project->values("TARGET").isEmpty()) soname += project->first("TARGET"); } else if(!project->isEmpty("QMAKE_BUNDLE")) { soname += project->first("TARGET_x.y"); } else if(!project->values("TARGET_x").isEmpty()) { soname += project->first("TARGET_x"); } if(!soname.isEmpty()) { if(project->isActiveConfig("absolute_library_soname") && project->values("INSTALLS").indexOf("target") != -1 && !project->isEmpty("target.path")) { QString instpath = Option::fixPathToTargetOS(project->first("target.path")); if(!instpath.endsWith(Option::dir_sep)) instpath += Option::dir_sep; soname.prepend(instpath); } project->values("QMAKE_LFLAGS_SONAME").first() += escapeFilePath(soname); } } if (project->values("QMAKE_LINK_SHLIB_CMD").isEmpty()) project->values("QMAKE_LINK_SHLIB_CMD").append( "$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS) $(OBJCOMP)"); } if (!project->values("QMAKE_APP_FLAG").isEmpty()) { project->values("QMAKE_CFLAGS") += project->values("QMAKE_CFLAGS_APP"); project->values("QMAKE_CXXFLAGS") += project->values("QMAKE_CXXFLAGS_APP"); project->values("QMAKE_LFLAGS") += project->values("QMAKE_LFLAGS_APP"); } else if (project->isActiveConfig("dll")) { if(!project->isActiveConfig("plugin") || !project->isActiveConfig("plugin_no_share_shlib_cflags")) { project->values("QMAKE_CFLAGS") += project->values("QMAKE_CFLAGS_SHLIB"); project->values("QMAKE_CXXFLAGS") += project->values("QMAKE_CXXFLAGS_SHLIB"); } if (project->isActiveConfig("plugin")) { project->values("QMAKE_CFLAGS") += project->values("QMAKE_CFLAGS_PLUGIN"); project->values("QMAKE_CXXFLAGS") += project->values("QMAKE_CXXFLAGS_PLUGIN"); project->values("QMAKE_LFLAGS") += project->values("QMAKE_LFLAGS_PLUGIN"); if(project->isActiveConfig("plugin_with_soname") && !project->isActiveConfig("compile_libtool")) project->values("QMAKE_LFLAGS") += project->values("QMAKE_LFLAGS_SONAME"); } else { project->values("QMAKE_LFLAGS") += project->values("QMAKE_LFLAGS_SHLIB"); if(!project->isEmpty("QMAKE_LFLAGS_COMPAT_VERSION")) { if(project->isEmpty("COMPAT_VERSION")) project->values("QMAKE_LFLAGS") += QString(project->first("QMAKE_LFLAGS_COMPAT_VERSION") + project->first("VER_MAJ") + "." + project->first("VER_MIN")); else project->values("QMAKE_LFLAGS") += QString(project->first("QMAKE_LFLAGS_COMPAT_VERSION") + project->first("COMPATIBILITY_VERSION")); } if(!project->isEmpty("QMAKE_LFLAGS_VERSION")) { project->values("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->values("QMAKE_LFLAGS") += project->values("QMAKE_LFLAGS_SONAME"); } } if(!project->isEmpty("QMAKE_BUNDLE")) { 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->values("QMAKE_INFO_PLIST").append(plist); project->values("QMAKE_INFO_PLIST_OUT").append(project->first("DESTDIR") + project->first("QMAKE_BUNDLE") + "/Contents/Info.plist"); project->values("ALL_DEPS") += project->first("QMAKE_INFO_PLIST_OUT"); if(!project->isEmpty("ICON") && project->first("TEMPLATE") == "app") project->values("ALL_DEPS") += project->first("DESTDIR") + project->first("QMAKE_BUNDLE") + "/Contents/Resources/" + project->first("ICON").section('/', -1); if(!project->isEmpty("QMAKE_BUNDLE_DATA")) { QString bundle_dir = project->first("DESTDIR") + project->first("QMAKE_BUNDLE") + "/"; QStringList &alldeps = project->values("ALL_DEPS"); const QStringList &bundle_data = project->values("QMAKE_BUNDLE_DATA"); for(int i = 0; i < bundle_data.count(); i++) { const QStringList &files = project->values(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(bool fixify){ 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("QMAKE_LIBTOOL_DESTDIR")) ret.prepend(project->first("QMAKE_LIBTOOL_DESTDIR") + Option::dir_sep); if(fixify) { if(QDir::isRelativePath(ret) && !project->isEmpty("DESTDIR")) ret.prepend(project->first("DESTDIR")); ret = Option::fixPathToLocalOS(fileFixify(ret, qmake_getpwd(), Option::output_dir)); } return ret;}voidUnixMakefileGenerator::writeLibtoolFile(){ QString fname = libtoolFileName(), lname = fname; mkdir(fileInfo(fname).path()); 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->values("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("TARG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -