void baseProject::addAddon(ofAddon & addon){ for(int i=0;i<(int)addons.size();i++){ if(addons[i].name==addon.name) return; } addons.push_back(addon); for(int i=0;i<(int)addon.includePaths.size();i++){ ofLogVerbose() << "adding addon include path: " << addon.includePaths[i]; addInclude(addon.includePaths[i]); } for(int i=0;i<(int)addon.libs.size();i++){ ofLogVerbose() << "adding addon libs: " << addon.libs[i]; addLibrary(addon.libs[i]); } for(int i=0;i<(int)addon.cflags.size();i++){ ofLogVerbose() << "adding addon cflags: " << addon.cflags[i]; addCFLAG(addon.cflags[i]); } for(int i=0;i<(int)addon.cppflags.size();i++){ ofLogVerbose() << "adding addon cppflags: " << addon.cppflags[i]; addCPPFLAG(addon.cppflags[i]); } for(int i=0;i<(int)addon.ldflags.size();i++){ ofLogVerbose() << "adding addon ldflags: " << addon.ldflags[i]; addLDFLAG(addon.ldflags[i]); } for(int i=0;i<(int)addon.srcFiles.size(); i++){ ofLogVerbose() << "adding addon srcFiles: " << addon.srcFiles[i]; addSrc(addon.srcFiles[i],addon.filesToFolders[addon.srcFiles[i]]); } for(int i=0;i<(int)addon.csrcFiles.size(); i++){ ofLogVerbose() << "adding addon c srcFiles: " << addon.csrcFiles[i]; addSrc(addon.csrcFiles[i],addon.filesToFolders[addon.csrcFiles[i]],C); } for(int i=0;i<(int)addon.cppsrcFiles.size(); i++){ ofLogVerbose() << "adding addon cpp srcFiles: " << addon.cppsrcFiles[i]; addSrc(addon.cppsrcFiles[i],addon.filesToFolders[addon.cppsrcFiles[i]],CPP); } for(int i=0;i<(int)addon.objcsrcFiles.size(); i++){ ofLogVerbose() << "adding addon objc srcFiles: " << addon.objcsrcFiles[i]; addSrc(addon.objcsrcFiles[i],addon.filesToFolders[addon.objcsrcFiles[i]],OBJC); } for(int i=0;i<(int)addon.headersrcFiles.size(); i++){ ofLogVerbose() << "adding addon header srcFiles: " << addon.headersrcFiles[i]; addSrc(addon.headersrcFiles[i],addon.filesToFolders[addon.headersrcFiles[i]],HEADER); } }
void visualStudioProject::addAddon(ofAddon & addon){ for(int i=0;i<(int)addon.includePaths.size();i++){ addInclude(addon.includePaths[i]); } for(int i=0;i<(int)addon.libs.size();i++){ addLibrary(addon.libs[i]); } for(int i=0;i<(int)addon.srcFiles.size();i++){ addSrc(addon.srcFiles[i],addon.filesToFolders[addon.srcFiles[i]]); } }
void MainWindow::loadSrc(QStringList filenames) { try { reconstruction_window* new_mdi = new reconstruction_window(filenames,this); new_mdi->setAttribute(Qt::WA_DeleteOnClose); new_mdi->show(); QDir::setCurrent(QFileInfo(filenames[0]).absolutePath()); if(filenames.size() == 1) { addSrc(filenames[0]); add_work_dir(QFileInfo(filenames[0]).absolutePath()); } } catch(...) { } }
void ofPgBaseProject::addAddon(ofAddon & addon){ for(int i=0;i<(int)addons.size();i++){ if(addons[i].name==addon.name) return; } addons.push_back(addon); for(int i=0;i<(int)addon.includePaths.size();i++){ ofLogVerbose() << "adding addon include path: " << addon.includePaths[i]; addInclude(addon.includePaths[i]); } for(int i=0;i<(int)addon.libs.size();i++){ ofLogVerbose() << "adding addon libs: " << addon.libs[i]; addLibrary(addon.libs[i]); } for(int i=0;i<(int)addon.srcFiles.size(); i++){ ofLogVerbose() << "adding addon srcFiles: " << addon.srcFiles[i]; addSrc(addon.srcFiles[i],addon.filesToFolders[addon.srcFiles[i]]); } }
void visualStudioProject::addAddon(ofAddon & addon){ for(int i=0;i<(int)addons.size();i++){ if(addons[i].name==addon.name) return; } addons.push_back(addon); for(int i=0;i<(int)addon.includePaths.size();i++){ ofLogVerbose() << "adding addon include path: " << addon.includePaths[i]; addInclude(addon.includePaths[i]); } // divide libs into debug and release libs // the most reliable would be to have seperate // folders for debug and release libs // i'm gonna start with a ghetto approach of just // looking for duplicate names except for a d.lib // at the end -> this is not great as many // libs compile with the d somewhere in the middle of the name... vector <string> debugLibs; vector <string> releaseLibs; vector <string> possibleReleaseOrDebugOnlyLibs; for(int i = 0; i < addon.libs.size(); i++){ size_t found = 0; // get the full lib name #ifdef TARGET_WIN32 found = addon.libs[i].find_last_of("\\"); #else found = addon.libs[i].find_last_of("/"); #endif string libName = addon.libs[i].substr(found+1); // get the first part of a lib name ie., libodd.lib -> libodd OR liboddd.lib -> liboddd found = libName.find_last_of("."); string firstPart = libName.substr(0,found); // check this lib name against every other lib name for(int j = 0; j < addon.libs.size(); j++){ // check if this lib name is contained within another lib name and is not the same name if(ofIsStringInString(addon.libs[j], firstPart) && addon.libs[i] != addon.libs[j]){ // if it is then add respecitive libs to debug and release if(!isInVector(addon.libs[j], debugLibs)){ //cout << "adding to DEBUG " << addon.libs[j] << endl; debugLibs.push_back(addon.libs[j]); } if(!isInVector(addon.libs[i], releaseLibs)){ //cout << "adding to RELEASE " << addon.libs[i] << endl; releaseLibs.push_back(addon.libs[i]); } // stop searching break; }else{ // if we only have a release or only have a debug lib // we'll want to add it to both releaseLibs and debugLibs // NB: all debug libs will get added to this vector, // but we catch that once all pairs have been added // since we cannot guarantee the order of parsing libs // although this is innefficient it fixes issues on linux if(!isInVector(addon.libs[i], possibleReleaseOrDebugOnlyLibs)){ possibleReleaseOrDebugOnlyLibs.push_back(addon.libs[i]); } // keep searching... } } } for(int i=0;i<(int)possibleReleaseOrDebugOnlyLibs.size();i++){ if(!isInVector(possibleReleaseOrDebugOnlyLibs[i], debugLibs) && !isInVector(possibleReleaseOrDebugOnlyLibs[i], releaseLibs)){ ofLogVerbose() << "RELEASE ONLY LIBS FOUND " << possibleReleaseOrDebugOnlyLibs[i] << endl; debugLibs.push_back(possibleReleaseOrDebugOnlyLibs[i]); releaseLibs.push_back(possibleReleaseOrDebugOnlyLibs[i]); } } for(int i=0;i<(int)debugLibs.size();i++){ ofLogVerbose() << "adding addon debug libs: " << debugLibs[i]; addLibrary(debugLibs[i], DEBUG_LIB); } for(int i=0;i<(int)releaseLibs.size();i++){ ofLogVerbose() << "adding addon release libs: " << releaseLibs[i]; addLibrary(releaseLibs[i], RELEASE_LIB); } for(int i=0;i<(int)addon.srcFiles.size(); i++){ ofLogVerbose() << "adding addon srcFiles: " << addon.srcFiles[i]; addSrc(addon.srcFiles[i],addon.filesToFolders[addon.srcFiles[i]]); } }
bool baseProject::create(string path){ addons.clear(); projectDir = ofFilePath::addTrailingSlash(path); projectName = ofFilePath::getFileName(path); bool bDoesDirExist = false; ofDirectory project(ofFilePath::join(projectDir,"src")); // this is a directory, really? if(project.exists()){ bDoesDirExist = true; }else{ ofDirectory project(projectDir); ofFile::copyFromTo(ofFilePath::join(templatePath,"src"),ofFilePath::join(projectDir,"src")); ofFile::copyFromTo(ofFilePath::join(templatePath,"bin"),ofFilePath::join(projectDir,"bin")); } // if overwrite then ask for permission... bool ret = createProjectFile(); if(!ret) return false; ret = loadProjectFile(); if(!ret) return false; if (bDoesDirExist){ vector < string > fileNames; getFilesRecursively(ofFilePath::join(projectDir , "src"), fileNames); for (int i = 0; i < (int)fileNames.size(); i++){ fileNames[i].erase(fileNames[i].begin(), fileNames[i].begin() + projectDir.length()); string first, last; #ifdef TARGET_WIN32 splitFromLast(fileNames[i], "\\", first, last); #else splitFromLast(fileNames[i], "/", first, last); #endif if (fileNames[i] != "src/ofApp.cpp" && fileNames[i] != "src/ofApp.h" && fileNames[i] != "src/main.cpp" && fileNames[i] != "src/ofApp.mm" && fileNames[i] != "src/main.mm"){ addSrc(fileNames[i], first); } } // if( target == "ios" ){ // getFilesRecursively(ofFilePath::join(projectDir , "bin/data"), fileNames); // // for (int i = 0; i < (int)fileNames.size(); i++){ // fileNames[i].erase(fileNames[i].begin(), fileNames[i].begin() + projectDir.length()); // // string first, last; // splitFromLast(fileNames[i], "/", first, last); // if (fileNames[i] != "Default.png" && // fileNames[i] != "src/ofApp.h" && // fileNames[i] != "src/main.cpp" && // fileNames[i] != "src/ofApp.mm" && // fileNames[i] != "src/main.mm"){ // addSrc(fileNames[i], first); // } // } // } #if defined(TARGET_LINUX) || defined(TARGET_OSX) parseAddons(); #endif // get a unique list of the paths that are needed for the includes. list < string > paths; vector < string > includePaths; for (int i = 0; i < (int)fileNames.size(); i++){ size_t found; #ifdef TARGET_WIN32 found = fileNames[i].find_last_of("\\"); #else found = fileNames[i].find_last_of("/"); #endif paths.push_back(fileNames[i].substr(0,found)); } paths.sort(); paths.unique(); for (list<string>::iterator it=paths.begin(); it!=paths.end(); ++it){ includePaths.push_back(*it); } for (int i = 0; i < includePaths.size(); i++){ addInclude(includePaths[i]); } } return true; }