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

📄 unixmake.cpp

📁 Linux下的基于X11的图形开发环境。
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/****************************************************************************** $Id: qt/unixmake.cpp   3.1.1   edited Nov 18 06:04 $**** Definition of ________ class.**** Created : 970521**** Copyright (C) 1992-2002 Trolltech AS.  All rights reserved.**** This file is part of the network module of the Qt GUI Toolkit.**** This file may be distributed under the terms of the Q Public License** as defined by Trolltech AS of Norway and appearing in the file** LICENSE.QPL included in the packaging of this file.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid Qt Enterprise Edition licenses may use this** file in accordance with the Qt Commercial License Agreement provided** with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for**   information about Qt Commercial License Agreements.** See http://www.trolltech.com/qpl/ for QPL licensing information.** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#include "unixmake.h"#include "option.h"#include <qregexp.h>#include <qfile.h>#include <qdict.h>#include <qdir.h>#include <time.h>voidUnixMakefileGenerator::init(){    if(init_flag)	return;    init_flag = TRUE;    if(!project->isEmpty("QMAKE_FAILED_REQUIREMENTS")) /* no point */	return;    QStringList &configs = project->variables()["CONFIG"];    /* this should probably not be here, but I'm using it to wrap the .t files */    if(project->first("TEMPLATE") == "app")	project->variables()["QMAKE_APP_FLAG"].append("1");    else if(project->first("TEMPLATE") == "lib")	project->variables()["QMAKE_LIB_FLAG"].append("1");    else if(project->first("TEMPLATE") == "subdirs") {	MakefileGenerator::init();	if(project->isEmpty("MAKEFILE"))	    project->variables()["MAKEFILE"].append("Makefile");	if(project->isEmpty("QMAKE"))	    project->variables()["QMAKE"].append("qmake");	if(project->variables()["QMAKE_INTERNAL_QMAKE_DEPS"].findIndex("qmake_all") == -1)	    project->variables()["QMAKE_INTERNAL_QMAKE_DEPS"].append("qmake_all");	return; /* subdirs is done */    }    if( project->isEmpty("QMAKE_EXTENSION_SHLIB") ) {	if ( project->isEmpty("QMAKE_CYGWIN_SHLIB") ) {	    project->variables()["QMAKE_EXTENSION_SHLIB"].append( "so" );	} else {	    project->variables()["QMAKE_EXTENSION_SHLIB"].append( "dll" );	}    }    if( project->isEmpty("QMAKE_COPY_FILE") )	project->variables()["QMAKE_COPY_FILE"].append( "$(COPY) -p" );    if( project->isEmpty("QMAKE_COPY_DIR") )	project->variables()["QMAKE_COPY_DIR"].append( "$(COPY) -pR" );    //If the TARGET looks like a path split it into DESTDIR and the resulting TARGET     if(!project->isEmpty("TARGET")) {	QString targ = project->first("TARGET");	int slsh = QMAX(targ.findRev('/'), targ.findRev(Option::dir_sep));	if(slsh != -1) {	    if(project->isEmpty("DESTDIR"))		project->values("DESTDIR").append("");	    else if(project->first("DESTDIR").right(1) != Option::dir_sep)		project->variables()["DESTDIR"] = project->first("DESTDIR") + Option::dir_sep;	    project->variables()["DESTDIR"] = project->first("DESTDIR") + targ.left(slsh+1);	    project->variables()["TARGET"] = targ.mid(slsh+1);	}    }    project->variables()["QMAKE_ORIG_TARGET"] = project->variables()["TARGET"];    bool is_qt = (project->first("TARGET") == "qt" || project->first("TARGET") == "qte" ||		  project->first("TARGET") == "qt-mt" || project->first("TARGET") == "qte-mt");    bool extern_libs = !project->isEmpty("QMAKE_APP_FLAG") ||		       (!project->isEmpty("QMAKE_LIB_FLAG") &&			project->isActiveConfig("dll")) || is_qt;    if(!project->isActiveConfig("global_init_link_order"))	project->variables()["QMAKE_LIBS"] += project->variables()["LIBS"];    if ( (!project->isEmpty("QMAKE_LIB_FLAG") && !project->isActiveConfig("staticlib") ) ||	 (project->isActiveConfig("qt") &&  project->isActiveConfig( "plugin" ) )) {	if(configs.findIndex("dll") == -1) configs.append("dll");    } else if ( !project->isEmpty("QMAKE_APP_FLAG") || project->isActiveConfig("dll") ) {	configs.remove("staticlib");    }    if ( project->isActiveConfig("warn_off") ) {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_WARN_OFF"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_WARN_OFF"];    } else if ( project->isActiveConfig("warn_on") ) {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_WARN_ON"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_WARN_ON"];    }    if ( project->isActiveConfig("debug") ) {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_DEBUG"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_DEBUG"];	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_DEBUG"];    } else {	project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_RELEASE"];	project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_RELEASE"];	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_RELEASE"];    }    if(!project->isEmpty("QMAKE_INCREMENTAL"))	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_INCREMENTAL"];    else if(!project->isEmpty("QMAKE_LFLAGS_PREBIND") &&	    !project->variables()["QMAKE_LIB_FLAG"].isEmpty() &&	    project->isActiveConfig("dll"))	project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_PREBIND"];    if(!project->isEmpty("QMAKE_INCDIR"))	project->variables()["INCLUDEPATH"] += project->variables()["QMAKE_INCDIR"];    if(!project->isEmpty("QMAKE_LIBDIR")) {	if ( !project->isEmpty("QMAKE_RPATH") )	    project->variables()["QMAKE_LIBDIR_FLAGS"] += varGlue("QMAKE_LIBDIR", " " + var("QMAKE_RPATH"), 								  " " + var("QMAKE_RPATH"), "");	project->variables()["QMAKE_LIBDIR_FLAGS"] += varGlue( "QMAKE_LIBDIR", "-L", " -L", "" );    }    if ( extern_libs && (project->isActiveConfig("qt") || project->isActiveConfig("opengl")) ) {	if(configs.findIndex("x11lib") == -1)	    configs.append("x11lib");	if ( project->isActiveConfig("opengl") && configs.findIndex("x11inc") == -1 )	    configs.append("x11inc");    }    if ( project->isActiveConfig("x11") ) {	if(configs.findIndex("x11lib") == -1)	    configs.append("x11lib");	if(configs.findIndex("x11inc") == -1)	    configs.append("x11inc");    }    if ( project->isActiveConfig("qt") ) {	if ( project->isActiveConfig("accessibility" ) )	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_ACCESSIBILITY_SUPPORT");	if ( project->isActiveConfig("tablet") )	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_TABLET_SUPPORT");	if(configs.findIndex("moc")) configs.append("moc");	project->variables()["INCLUDEPATH"] += project->variables()["QMAKE_INCDIR_QT"];	if ( !project->isActiveConfig("debug") )	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_NO_DEBUG");	if ( !is_qt ) {	    if ( !project->isEmpty("QMAKE_LIBDIR_QT") ) {		if ( !project->isEmpty("QMAKE_RPATH") )		    project->variables()["QMAKE_LIBDIR_FLAGS"] += varGlue("QMAKE_LIBDIR_QT", " " + var("QMAKE_RPATH"), 									  " " + var("QMAKE_RPATH"), "");		project->variables()["QMAKE_LIBDIR_FLAGS"] += varGlue("QMAKE_LIBDIR_QT", "-L", " -L", "");	    }	    if (project->isActiveConfig("thread") && !project->isEmpty("QMAKE_LIBS_QT_THREAD"))		project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_QT_THREAD"];	    else		project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_QT"];	}    }    if ( project->isActiveConfig("opengl") ) {	project->variables()["INCLUDEPATH"] += project->variables()["QMAKE_INCDIR_OPENGL"];	if(!project->isEmpty("QMAKE_LIBDIR_OPENGL")) 	    project->variables()["QMAKE_LIBDIR_FLAGS"] += varGlue("QMAKE_LIBDIR_OPENGL", "-L", " -L", "");	if ( is_qt )	    project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_OPENGL_QT"];	else	    project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_OPENGL"];    }    if(project->isActiveConfig("global_init_link_order"))	project->variables()["QMAKE_LIBS"] += project->variables()["LIBS"];    if ( project->isActiveConfig("x11inc") )	project->variables()["INCLUDEPATH"] += project->variables()["QMAKE_INCDIR_X11"];    if ( project->isActiveConfig("x11lib") ) {	if(!project->isEmpty("QMAKE_LIBDIR_X11"))	    project->variables()["QMAKE_LIBDIR_FLAGS"] += varGlue("QMAKE_LIBDIR_X11", "-L", " -L", "");	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_X11"];    }    if ( project->isActiveConfig("x11sm") )	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_X11SM"];    if ( project->isActiveConfig("dylib") )	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_DYNLOAD"];    if ( project->isActiveConfig("thread") ) {	if(project->isActiveConfig("qt"))	    project->variables()[is_qt ? "PRL_EXPORT_DEFINES" : "DEFINES"].append("QT_THREAD_SUPPORT");	if ( !project->isEmpty("QMAKE_CFLAGS_THREAD"))	    project->variables()["QMAKE_CFLAGS"] += project->variables()["QMAKE_CFLAGS_THREAD"];	if( !project->isEmpty("QMAKE_CXXFLAGS_THREAD"))	    project->variables()["QMAKE_CXXFLAGS"] += project->variables()["QMAKE_CXXFLAGS_THREAD"];	project->variables()["INCLUDEPATH"] += project->variables()["QMAKE_INCDIR_THREAD"];	project->variables()["QMAKE_LIBS"] += project->variables()["QMAKE_LIBS_THREAD"];	if(!project->isEmpty("QMAKE_LFLAGS_THREAD"))	    project->variables()["QMAKE_LFLAGS"] += project->variables()["QMAKE_LFLAGS_THREAD"];    }    if ( project->isActiveConfig("moc") )	setMocAware(TRUE);    if ( project->isEmpty("QMAKE_RUN_CC") )	project->variables()["QMAKE_RUN_CC"].append("$(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src");    if ( project->isEmpty("QMAKE_RUN_CC_IMP") )	project->variables()["QMAKE_RUN_CC_IMP"].append("$(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<");    if ( project->isEmpty("QMAKE_RUN_CXX") )	project->variables()["QMAKE_RUN_CXX"].append("$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src");    if ( project->isEmpty("QMAKE_RUN_CXX_IMP") )	project->variables()["QMAKE_RUN_CXX_IMP"].append("$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<");    project->variables()["QMAKE_FILETAGS"] += QStringList::split("HEADERS SOURCES TARGET DESTDIR", " ");    if ( !project->isEmpty("PRECOMPH") ) {	initOutPaths(); 	// Need to fix MOC_DIR since we do this before init()	QString allmoc = fileFixify(project->first("MOC_DIR") + "/allmoc.cpp", QDir::currentDirPath(), Option::output_dir);	project->variables()["SOURCES"].prepend(allmoc);	project->variables()["HEADERS_ORIG"] = project->variables()["HEADERS"];	project->variables()["HEADERS"].clear();    }    if( project->isActiveConfig("GNUmake") && !project->isEmpty("QMAKE_CFLAGS_DEPS"))	include_deps = TRUE; //do not generate deps    MakefileGenerator::init();    if ( project->isActiveConfig("resource_fork") && !project->isActiveConfig("console")) {	if(!project->isEmpty("QMAKE_APP_FLAG")) {	    if(project->isEmpty("DESTDIR"))		project->values("DESTDIR").append("");	    project->variables()["DESTDIR"].first() += project->variables()["TARGET"].first() +						       ".app/Contents/MacOS/";	    project->variables()["QMAKE_PKGINFO"].append(project->first("DESTDIR") + "../PkgInfo");	    project->variables()["ALL_DEPS"] += project->first("QMAKE_PKGINFO");	    QString plist = specdir() + QDir::separator() + "Info.plist." +			    project->first("TEMPLATE");	    if(QFile::exists(Option::fixPathToLocalOS(plist))) {		project->variables()["QMAKE_INFO_PLIST"].append(plist);		project->variables()["QMAKE_INFO_PLIST_OUT"].append(project->first("DESTDIR") +								    "../Info.plist");		project->variables()["ALL_DEPS"] += project->first("QMAKE_INFO_PLIST_OUT");		if(!project->isEmpty("RC_FILE"))		    project->variables()["ALL_DEPS"] += project->first("DESTDIR") +							"../Resources/application.icns";	    }	}    }    if(!project->isEmpty("QMAKE_INTERNAL_INCLUDED_FILES"))	project->variables()["DISTFILES"] += project->variables()["QMAKE_INTERNAL_INCLUDED_FILES"];    project->variables()["DISTFILES"] += Option::mkfile::project_files;    init2();

⌨️ 快捷键说明

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