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

📄 makemgr.cpp

📁 Linux下的C、C++ IDE
💻 CPP
字号:
#include "makemgr.h"#include "langdef.h"#include "portdef.h"#include <qfileinfo.h>#include <fstream>///////////////////// MakeType classbool MakeType::writeFile(QString path, QString data){	std::ofstream out((const char *) path);	if (!out)		return false;	out << (const char *) data;	out.close();	return true;}//////////////////// MakeMgr classbool MakeMgr::create(HideProj *proj){	QStringList listCompile, *pFileList = 0;	QFileInfo fi;	QString cc = "", copt = "", bopt = "", objs = "", makefile = "", path = "";	unsigned i = 0;	path = (QString) proj->getRoot() + FILE_SEP + "makefile";		if (proj->getLang() == LANG_C)		cc = "gcc";	else	if (proj->getLang() == LANG_CPP)		cc = "g++";	else		return false;	pFileList = proj->getFileList();	// Get all the compilables files from the list...	for (; i < pFileList->count(); i++)	{		fi.setFile((*pFileList)[i]);		if (IS_COMPILABLE_C(fi.extension(0)) || 		    IS_COMPILABLE_CPP(fi.extension(0)))			listCompile << (*pFileList)[i];	}	copt = proj->getCompileOpt();	bopt = proj->getBuildOpt();	objs = getAllObjs(&listCompile);		makefile = (QString)		"#######################################################\n" +		"# hIDE Makefile for " + proj->getName() + "\n" +		"#\n" +		"# (NOTE: This file is automatically generated.\n" +		"# Modifications will not be saved!)\n\n";	// Create makefile vars...	makefile += (QString) 		"CC = " + cc + "\n" +		"COPT = " + copt + "\n" +		"BOPT = " + bopt + "\n" +		"OBJS = " + objs + "\n" +		"TARG = " + proj->getName() + "\n\n";	// Create main target...	makefile += (QString)		"$(TARG) : $(OBJS)\n" +		"\t$(CC) $(BOPT) -o $(TARG) $(OBJS)\n\n";	// Create object targets...	for (i=0; i < listCompile.count(); i++)	{		fi.setFile(listCompile[i]);		makefile += (QString)			fi.baseName() + ".o : " + fi.fileName() + " " + getDeps(listCompile[i]) + "\n" +		"\t$(CC) $(COPT) -c " + fi.fileName() + "\n\n";	}	// Clean section...	makefile += (QString)		"clean :\n" +		"\trm -f $(OBJS)\n";		 	return writeFile(path, makefile);}QString MakeMgr::getAllObjs(QStringList *list){	QString objs = "";	QFileInfo fi;	for (unsigned i=0; i < list->count(); i++)	{		fi.setFile((*list)[i]);		objs += (QString) fi.baseName() + ".o";		if (i != (list->count() - 1))			objs += " ";	}			return objs;}QString MakeMgr::getDeps(QString srcfile){	char line[2056], *p = 0;	std::ifstream in;	QString deps;	in.open(srcfile);	if (!in)		return "";	while (!in.eof())	{		memset(line, 0x00, sizeof(line));		in.getline(line, sizeof(line));		if (in.eof())			break;		// Parse line...		if (strstr(line, "#include "))		{			if ((p = strtok(line, "\"")))			{				if ((p = strtok(NULL, "\"")))					deps += (QString) p + " ";			}		}				}	in.close();	return deps;}////////////////////// JMakeMgr classbool JMakeMgr::create(HideProj *proj){	QString path = "", jmakefile = "", fn = "";	QFileInfo fi;	path = (QString) proj->getRoot() + FILE_SEP + "jmakefile";	for (unsigned i=0; i < proj->getFileList()->count(); i++)	{		fn = (*proj->getFileList())[i];				fi.setFile(fn);		if (IS_JAVA(fi.extension(0)))			jmakefile += (QString) "\"" + fn + "\"\n";	}	return writeFile(path, jmakefile);}

⌨️ 快捷键说明

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