bool CBWinProject::createProjectFile() { string project = projectDir + projectName + ".cbp"; string workspace = projectDir + projectName + ".workspace"; ofFile::copyFromTo(ofFilePath::join(templatePath,"emptyExample.cbp"),project, false, true); ofFile::copyFromTo(ofFilePath::join(templatePath,"emptyExample.workspace"),workspace, false, true); ofFile::copyFromTo(ofFilePath::join(templatePath,"icon.rc"), projectDir + "icon.rc", false, true); //let's do some renaming: string relRoot = getOFRelPath(ofFilePath::removeTrailingSlash(projectDir)); if (relRoot != "../../../") { string relRootWindows = relRoot; // let's make it windows friendly: for(int i = 0; i < relRootWindows.length(); i++) { if( relRootWindows[i] == '/' ) relRootWindows[i] = '\\'; } findandreplaceInTexfile(workspace, "../../../", relRoot); findandreplaceInTexfile(project, "../../../", relRoot); findandreplaceInTexfile(workspace, "..\\..\\..\\", relRootWindows); findandreplaceInTexfile(project, "..\\..\\..\\", relRootWindows); } return true; }
bool visualStudioProject::createProjectFile(){ string project = ofFilePath::join(projectDir,projectName + ".vcxproj"); string user = ofFilePath::join(projectDir,projectName + ".vcxproj.user"); string solution = ofFilePath::join(projectDir,projectName + ".sln"); string filters = ofFilePath::join(projectDir, projectName + ".vcxproj.filters"); ofFile::copyFromTo(ofFilePath::join(templatePath,"emptyExample.vcxproj"),project,false, true); ofFile::copyFromTo(ofFilePath::join(templatePath,"emptyExample.vcxproj.user"),user, false, true); ofFile::copyFromTo(ofFilePath::join(templatePath,"emptyExample.sln"),solution, false, true); ofFile::copyFromTo(ofFilePath::join(templatePath,"emptyExample.vcxproj.filters"),filters, false, true); ofFile::copyFromTo(ofFilePath::join(templatePath,"icon.rc"), projectDir + "icon.rc", false, true); ofFile filterFile(filters); string temp = filterFile.readToBuffer(); pugi::xml_parse_result result = filterXmlDoc.load(temp.c_str()); if (result.status==pugi::status_ok) ofLogVerbose() << "loaded filter "; else ofLogVerbose() << "problem loading filter "; findandreplaceInTexfile(solution,"emptyExample",projectName); findandreplaceInTexfile(user,"emptyExample",projectName); findandreplaceInTexfile(project,"emptyExample",projectName); string relRoot = getOFRelPath(ofFilePath::removeTrailingSlash(projectDir)); if (relRoot != "../../../"){ string relRootWindows = relRoot; // let's make it windows friendly: for(int i = 0; i < relRootWindows.length(); i++) { if( relRootWindows[i] == '/' ) relRootWindows[i] = '\\'; } // sln has windows paths: findandreplaceInTexfile(solution, "..\\..\\..\\", relRootWindows); // vcx has unixy paths: //..\..\..\libs findandreplaceInTexfile(project, "../../../", relRoot); } return true; }
bool CBWinProject::saveProjectFile() { findandreplaceInTexfile(ofFilePath::join(projectDir , projectName + ".workspace"),"emptyExample",projectName); pugi::xpath_node_set title = doc.select_nodes("//Option[@title]"); if(!title.empty()) { if(!title[0].node().attribute("title").set_value(projectName.c_str())) { ofLogError(LOG_NAME) << "can't set title"; } } return doc.save_file((projectDir + projectName + ".cbp").c_str()); }
bool CBLinuxProject::createProjectFile(){ ofDirectory dir(projectDir); if(!dir.exists()) dir.create(true); ofFile project(ofFilePath::join(projectDir, projectName + ".cbp")); string src = ofFilePath::join(templatePath,"emptyExample_" + target + ".cbp"); string dst = project.path(); bool ret; if(!project.exists()){ ret = ofFile::copyFromTo(src,dst); if(!ret){ ofLogError(LOG_NAME) << "error copying cbp template from " << src << " to " << dst; return false; }else{ findandreplaceInTexfile(dst, "emptyExample", projectName); } } ofFile workspace(ofFilePath::join(projectDir, projectName + ".workspace")); if(!workspace.exists()){ src = ofFilePath::join(templatePath,"emptyExample_" + target + ".workspace"); dst = workspace.path(); ret = ofFile::copyFromTo(src,dst); if(!ret){ ofLogError(LOG_NAME) << "error copying workspace template from "<< src << " to " << dst; return false; }else{ findandreplaceInTexfile(dst, "emptyExample", projectName); } } ofFile makefile(ofFilePath::join(projectDir,"Makefile")); if(!makefile.exists()){ src = ofFilePath::join(templatePath,"Makefile"); dst = makefile.path(); ret = ofFile::copyFromTo(src,dst); if(!ret){ ofLogError(LOG_NAME) << "error copying Makefile template from " << src << " to " << dst; return false; } } ofFile config(ofFilePath::join(projectDir,"config.make")); if(!config.exists()){ src = ofFilePath::join(templatePath,"config.make"); dst = config.path(); ret = ofFile::copyFromTo(src,dst); if(!ret){ ofLogError(LOG_NAME) << "error copying config.make template from " << src << " to " << dst; return false; } } // handle the relative roots. string relRoot = getOFRelPath(ofFilePath::removeTrailingSlash(projectDir)); if (relRoot != "../../../"){ string relPath2 = relRoot; relPath2.erase(relPath2.end()-1); findandreplaceInTexfile(projectDir + "Makefile", "../../..", relPath2); findandreplaceInTexfile(projectDir + "config.make", "../../..", relPath2); findandreplaceInTexfile(ofFilePath::join(projectDir , projectName + ".workspace"), "../../../", relRoot); findandreplaceInTexfile(ofFilePath::join(projectDir , projectName + ".cbp"), "../../../", relRoot); } return true; }