void ofAddon::fromFS(string path, string platform){ clear(); name = ofFilePath::getFileName(path); string filePath = path + "/src"; string ofRootPath = ofFilePath::addTrailingSlash(getOFRoot()); //we need to add a trailing slash for the erase to work properly ofLogVerbose() << "in fromFS, trying src " << filePath; getFilesRecursively(filePath, srcFiles); for(int i=0;i<(int)srcFiles.size();i++){ srcFiles[i].erase (srcFiles[i].begin(), srcFiles[i].begin()+ofRootPath.length()); ofLogVerbose() << " srcFiles " << srcFiles[i]; int init = 0; #ifdef TARGET_WIN32 int end = srcFiles[i].rfind("\\"); #else int end = srcFiles[i].rfind("/"); #endif string folder = srcFiles[i].substr(init,end); srcFiles[i] = pathToOF + srcFiles[i]; filesToFolders[srcFiles[i]] = folder; } string libsPath = path + "/libs"; vector < string > libFiles; cout << libs.size() << " libs size + platform = " << platform << endl; if (ofDirectory::doesDirectoryExist(libsPath)){ getLibsRecursively(libsPath, libFiles, libs, platform); } cout << libs.size() << " libs size " << endl; // I need to add libFiles to srcFiles for (int i = 0; i < (int)libFiles.size(); i++){ libFiles[i].erase (libFiles[i].begin(), libFiles[i].begin()+ofRootPath.length()); ofLogVerbose() << " libFiles " << libFiles[i]; int init = 0; #ifdef TARGET_WIN32 int end = libFiles[i].rfind("\\"); #else int end = libFiles[i].rfind("/"); #endif if (end > 0){ string folder = libFiles[i].substr(init,end); libFiles[i] = pathToOF + libFiles[i]; srcFiles.push_back(libFiles[i]); filesToFolders[libFiles[i]] = folder; } } for (int i = 0; i < (int)libs.size(); i++){ // does libs[] have any path ? let's fix if so. #ifdef TARGET_WIN32 int end = libs[i].rfind("\\"); #else int end = libs[i].rfind("/"); #endif if (end > 0){ libs[i].erase (libs[i].begin(), libs[i].begin()+ofRootPath.length()); libs[i] = pathToOF + libs[i]; } } // get a unique list of the paths that are needed for the includes. list < string > paths; for (int i = 0; i < (int)srcFiles.size(); i++){ size_t found; #ifdef TARGET_WIN32 found = srcFiles[i].find_last_of("\\"); #else found = srcFiles[i].find_last_of("/"); #endif paths.push_back(srcFiles[i].substr(0,found)); } // get every folder in addon/src and addon/libs vector < string > libFolders; ofLogVerbose() << "trying get folders recursively " << (path + "/libs"); getFoldersRecursively(path + "/libs", libFolders, platform); vector < string > srcFolders; getFoldersRecursively(path + "/src", srcFolders, platform); for (int i = 0; i < libFolders.size(); i++){ libFolders[i].erase (libFolders[i].begin(), libFolders[i].begin()+ofRootPath.length()); libFolders[i] = pathToOF + libFolders[i]; paths.push_back(libFolders[i]); } for (int i = 0; i < srcFolders.size(); i++){ srcFolders[i].erase (srcFolders[i].begin(), srcFolders[i].begin()+ofRootPath.length()); srcFolders[i] = pathToOF + srcFolders[i]; paths.push_back(srcFolders[i]); } paths.sort(); paths.unique(); for (list<string>::iterator it=paths.begin(); it!=paths.end(); ++it){ includePaths.push_back(*it); } }
void ofAddon::fromFS(string path, string platform){ clear(); this->platform = platform; name = ofFilePath::getFileName(path); addonPath = ofFilePath::join(getAddonsRoot(),name); string filePath = path + "/src"; string ofRootPath = ofFilePath::addTrailingSlash(getOFRoot()); //we need to add a trailing slash for the erase to work properly ofLogVerbose() << "in fromFS, trying src " << filePath; ofSetLogLevel(OF_LOG_NOTICE); getFilesRecursively(filePath, srcFiles); //ofSetLogLevel(OF_LOG_VERBOSE); for(int i=0;i<(int)srcFiles.size();i++){ srcFiles[i].erase (srcFiles[i].begin(), srcFiles[i].begin()+ofRootPath.length()); //ofLogVerbose() << " srcFiles " << srcFiles[i]; int init = 0; #ifdef TARGET_WIN32 int end = srcFiles[i].rfind("\\"); #else int end = srcFiles[i].rfind("/"); #endif string folder = srcFiles[i].substr(init,end); srcFiles[i] = pathToOF + srcFiles[i]; filesToFolders[srcFiles[i]] = folder; } string libsPath = path + "/libs"; vector < string > libFiles; //ofSetLogLevel(OF_LOG_NOTICE); if (ofDirectory::doesDirectoryExist(libsPath)){ getLibsRecursively(libsPath, libFiles, libs, platform); if (platform == "osx" || platform == "ios"){ getFrameworksRecursively(libsPath, frameworks, platform); } } //ofSetLogLevel(OF_LOG_VERBOSE); // I need to add libFiles to srcFiles for (int i = 0; i < (int)libFiles.size(); i++){ libFiles[i].erase (libFiles[i].begin(), libFiles[i].begin()+ofRootPath.length()); //ofLogVerbose() << " libFiles " << libFiles[i]; int init = 0; #ifdef TARGET_WIN32 int end = libFiles[i].rfind("\\"); #else int end = libFiles[i].rfind("/"); #endif if (end > 0){ string folder = libFiles[i].substr(init,end); libFiles[i] = pathToOF + libFiles[i]; srcFiles.push_back(libFiles[i]); filesToFolders[libFiles[i]] = folder; } } for (int i = 0; i < (int)libs.size(); i++){ // does libs[] have any path ? let's fix if so. #ifdef TARGET_WIN32 int end = libs[i].rfind("\\"); #else int end = libs[i].rfind("/"); #endif if (end > 0){ libs[i].erase (libs[i].begin(), libs[i].begin()+ofRootPath.length()); libs[i] = pathToOF + libs[i]; } } for (int i = 0; i < (int)frameworks.size(); i++){ // does libs[] have any path ? let's fix if so. #ifdef TARGET_WIN32 int end = frameworks[i].rfind("\\"); #else int end = frameworks[i].rfind("/"); #endif if (end > 0){ frameworks[i].erase (frameworks[i].begin(), frameworks[i].begin()+ofRootPath.length()); frameworks[i] = pathToOF + frameworks[i]; } } // get a unique list of the paths that are needed for the includes. list < string > paths; for (int i = 0; i < (int)srcFiles.size(); i++){ size_t found; #ifdef TARGET_WIN32 found = srcFiles[i].find_last_of("\\"); #else found = srcFiles[i].find_last_of("/"); #endif paths.push_back(srcFiles[i].substr(0,found)); } // get every folder in addon/src and addon/libs vector < string > libFolders; ofLogVerbose() << "trying get folders recursively " << (path + "/libs"); // the dirList verbosity is crazy, so I'm setting this off for now. //ofSetLogLevel(OF_LOG_NOTICE); getFoldersRecursively(path + "/libs", libFolders, platform); vector < string > srcFolders; getFoldersRecursively(path + "/src", srcFolders, platform); //ofSetLogLevel(OF_LOG_VERBOSE); for (int i = 0; i < (int)libFolders.size(); i++){ libFolders[i].erase (libFolders[i].begin(), libFolders[i].begin()+ofRootPath.length()); libFolders[i] = pathToOF + libFolders[i]; paths.push_back(libFolders[i]); } for (int i = 0; i < (int)srcFolders.size(); i++){ srcFolders[i].erase (srcFolders[i].begin(), srcFolders[i].begin()+ofRootPath.length()); srcFolders[i] = pathToOF + srcFolders[i]; paths.push_back(srcFolders[i]); } paths.sort(); paths.unique(); for (list<string>::iterator it=paths.begin(); it!=paths.end(); ++it){ includePaths.push_back(*it); } parseConfig(); }
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; }
void ofAddon::fromFS(string path, string platform){ clear(); name = ofFilePath::getFileName(path); string filePath = path + "/src"; cout << "in fromFS, trying src " << filePath << endl; getFilesRecursively(filePath, srcFiles); for(int i=0;i<(int)srcFiles.size();i++){ srcFiles[i].erase (srcFiles[i].begin(), srcFiles[i].begin()+getOFRoot().length()); int init = srcFiles[i].find("/")+1; int end = srcFiles[i].rfind("/") - srcFiles[i].find("/"); string folder = srcFiles[i].substr(init,end); srcFiles[i] = pathToOF + srcFiles[i]; filesToFolders[srcFiles[i]] = folder; } string libsPath = path + "/libs"; vector < string > libFiles; vector < string > libLibs; if (ofDirectory::doesDirectoryExist(libsPath)){ getLibsRecursively(libsPath, libFiles, libs, platform); } // I need to add libFiles to srcFiles for (int i = 0; i < (int)libFiles.size(); i++){ libFiles[i].erase (libFiles[i].begin(), libFiles[i].begin()+getOFRoot().length()); int init = libFiles[i].find("/")+1; int end = libFiles[i].rfind("/") - libFiles[i].find("/"); string folder = libFiles[i].substr(init,end); libFiles[i] = pathToOF + libFiles[i]; srcFiles.push_back(libFiles[i]); filesToFolders[libFiles[i]] = folder; } for (int i = 0; i < (int)libs.size(); i++){ libs[i].erase (libs[i].begin(), libs[i].begin()+getOFRoot().length()); libs[i] = pathToOF + libs[i]; } // get a unique list of the paths that are needed for the includes. list < string > paths; for (int i = 0; i < (int)srcFiles.size(); i++){ size_t found; found = srcFiles[i].find_last_of("/"); paths.push_back(srcFiles[i].substr(0,found)); } // get every folder in addon/src and addon/libs vector < string > libFolders; cout << "trying get folders recursively " << (path + "/libs") << endl; getFoldersRecursively(path + "/libs", libFolders); vector < string > srcFolders; getFoldersRecursively(path + "/src", srcFolders); for (int i = 0; i < libFolders.size(); i++){ libFolders[i].erase (libFolders[i].begin(), libFolders[i].begin()+getOFRoot().length()); libFolders[i] = pathToOF + libFolders[i]; paths.push_back(libFolders[i]); } for (int i = 0; i < srcFolders.size(); i++){ srcFolders[i].erase (srcFolders[i].begin(), srcFolders[i].begin()+getOFRoot().length()); srcFolders[i] = pathToOF + srcFolders[i]; paths.push_back(srcFolders[i]); } paths.sort(); paths.unique(); for (list<string>::iterator it=paths.begin(); it!=paths.end(); ++it){ includePaths.push_back(*it); } }