TEST(ApplicationsLib, ProjectData) { ProjectData project; GeoLib::GEOObjects *geo_objects = project.getGEOObjects(); ASSERT_TRUE(geo_objects != nullptr); }
void ClangCompilationDatabaseGenerator::generate() { for (const Project &theProject : project().projects.values()) { QJsonArray database; const ProjectData projectData = theProject.projectData(); const QString buildDir = projectData.buildDirectory(); for (const ProductData &productData : projectData.allProducts()) { for (const GroupData &groupData : productData.groups()) { for (const ArtifactData &sourceArtifact : groupData.allSourceArtifacts()) { if (!hasValidInputFileTag(sourceArtifact.fileTags())) continue; const QString filePath = sourceArtifact.filePath(); ErrorInfo errorInfo; const RuleCommandList rules = theProject.ruleCommands(productData, filePath, QStringLiteral("obj"), &errorInfo); if (errorInfo.hasError()) throw errorInfo; for (const RuleCommand &rule : rules) { if (rule.type() != RuleCommand::ProcessCommandType) continue; database.append(createEntry(filePath, buildDir, rule)); } } } } writeProjectDatabase(QDir(buildDir).filePath(DefaultDatabaseFileName), database); } }
String CompilerThread_createLibtoolString(ProjectData& projData, const ArrayList<String>& inputFiles, const String& outputFile) { String projectRoot = (String)ProjLoad_getSavedProjectsFolder() + '/' + projData.getFolderName(); String command = libtoolCommand + ' '; ProjectType projType = projData.getProjectType(); if(projType==PROJECTTYPE_DYNAMICLIBRARY) { command += "-dynamic "; } else if(projType==PROJECTTYPE_STATICLIBRARY) { command += "-static "; } //user-specified compiler flags ArrayList<String>& flags = projData.getProjectSettings().getCompilerFlags(); for(int i=0; i<flags.size(); i++) { String& flag = flags.get(i); command += flag + " "; } //source (input) files for(int i=0; i<inputFiles.size(); i++) { const String& file = inputFiles.get(i); String extension = CompilerThread_getExtensionForFilename(file); if(!extension.equals("h")) { command += (String)"\"" + file + "\" "; } } command += (String)"-o \"" + outputFile + "\""; return command; }
CommandLineFrontend::ProductMap CommandLineFrontend::productsToUse() const { ProductMap products; QStringList productNames; const bool useAll = m_parser.products().empty(); for (const Project &project : qAsConst(m_projects)) { QList<ProductData> &productList = products[project]; const ProjectData projectData = project.projectData(); const auto products = projectData.allProducts(); for (const ProductData &product : products) { productNames << product.name(); if (useAll || m_parser.products().contains(product.name())) { productList.push_back(product); } } } const auto parsedProductNames = m_parser.products(); for (const QString &productName : parsedProductNames) { if (!productNames.contains(productName)) { QString msg; if (productNames.size() <= 10) { productNames.sort(); const QString available = productNames.join(QLatin1String("', '")); msg = Tr::tr("No such product '%1'. " "Available products: '%2'").arg(productName, available); } else { msg = Tr::tr("No such product '%1'. Use 'list-products' to see " "all available products.").arg(productName); } throw ErrorInfo(msg); } } return products; }
String CompilerThread_createCompileString(ProjectData& projData, const ArrayList<String>& inputFiles, const String& outputFile) { String projectRoot = (String)ProjLoad_getSavedProjectsFolder() + '/' + projData.getFolderName(); String command = clangCommand + ' '; ProjectType projType = projData.getProjectType(); if(projType==PROJECTTYPE_DYNAMICLIBRARY) { command += "-dynamiclib "; } //sdk root String sdk = projData.getProjectSettings().getSDK(); if(!sdk.equals("")) { String sdkPath = (String)Global_getSDKFolderPath() + "/" + sdk; command += (String)"-isysroot \"" + sdkPath + "\" "; } //include directories ArrayList<String>& includes = projData.getIncludeDirs(); for(int i=0; i<includes.size(); i++) { String& includeDir = includes.get(i); if(includeDir.length()>0) { if(includeDir.charAt(0)!='/') { command += (String)"-I\"" + projectRoot + "/ext/" + includeDir + "\" "; } else { command += (String)"-I\"" + includeDir + "\" "; } } } //frameworks ArrayList<String>& frameworks = projData.getFrameworkList(); for(int i=0; i<frameworks.size(); i++) { String& framework = frameworks.get(i); command += (String)"-framework " + framework + " "; } //c++ standard library and objective-c library command += "-lstdc++ -lobjc "; //turn off fixit info command += "-fno-diagnostics-fixit-info -fno-caret-diagnostics "; //set disabled warning flags ArrayList<String>& disabledWarnings = projData.getProjectSettings().getDisabledWarnings(); for(int i=0; i<disabledWarnings.size(); i++) { String warning = disabledWarnings.get(i); if(warning.length()>2 && warning.charAt(0)=='-' && warning.charAt(1)=='W') { String noWarning = (String)"-Wno-" + warning.substring(2) + ' '; command += noWarning; } } //user-specified compiler flags ArrayList<String>& flags = projData.getProjectSettings().getCompilerFlags(); for(int i=0; i<flags.size(); i++) { String& flag = flags.get(i); command += flag + " "; } //source (input) files for(int i=0; i<inputFiles.size(); i++) { const String& file = inputFiles.get(i); String extension = CompilerThread_getExtensionForFilename(file); if(!extension.equals("h")) { command += (String)"\"" + file + "\" "; } } //lib directories ArrayList<String> srcTypes = CompilerThread_getSourceTypes(); ArrayList<String>& libs = projData.getLibDirs(); for(int i=0; i<libs.size(); i++) { String& libDir = libs.get(i); if(libDir.length()>0) { ArrayList<String> libFiles; if(libDir.charAt(0)!='/') { String fullLibDir = projectRoot + "/ext/" + libDir; libFiles = FileTools::getFilenamesWithExtension(fullLibDir, srcTypes); } else { libFiles = FileTools::getFilenamesWithExtension(libDir, srcTypes); } for(int j=0; j<libFiles.size(); j++) { String& file = libFiles.get(j); String extension = ""; int dotIndex = file.lastIndexOf("."); if(dotIndex!=-1) { extension = file.substring(dotIndex+1, file.length()); } if(extension=="dylib") { command += (String)"-l \""+file+"\" "; } else { command += (String)"\"" + file + "\" "; } } } } //TODO replace version info with specified version info in ProjectData if(projType==PROJECTTYPE_DYNAMICLIBRARY) { command += "-current_version 1.0 -compatibility_version 1.0 -fvisibility=hidden "; } //output file (executable) command += (String)"-o \"" + outputFile + "\" "; return command; }
String CompilerThread_createAssembleString(ProjectData& projData, const String& file, const String& outputFile, const String& dependencyFile) { String projectRoot = (String)ProjLoad_getSavedProjectsFolder() + '/' + projData.getFolderName(); String command = clangCommand + ' '; String fileExtension = ""; int dotIndex = file.lastIndexOf("."); if(dotIndex!=-1) { fileExtension = file.substring(dotIndex+1, file.length()); } if(dependencyFile.length()>0) { command += (String)"-MD -MF \"" + dependencyFile + "\" "; } //sdk root String sdk = projData.getProjectSettings().getSDK(); if(!sdk.equals("")) { String sdkPath = (String)Global_getSDKFolderPath() + "/" + sdk; command += (String)"-isysroot \"" + sdkPath + "\" "; } //include directories ArrayList<String>& includes = projData.getIncludeDirs(); for(int i=0; i<includes.size(); i++) { String& includeDir = includes.get(i); if(includeDir.length()>0) { if(includeDir.charAt(0)!='/') { command += (String)"-I\"" + projectRoot + "/ext/" + includeDir + "\" "; } else { command += (String)"-I\"" + includeDir + "\" "; } } } //c++ flag if(fileExtension=="cpp" || fileExtension=="CPP" || fileExtension=="mm" || fileExtension=="MM" || fileExtension=="cxx" || fileExtension=="CXX" || fileExtension=="c++" || fileExtension=="C++") { command += "-stdlib=libstdc++ -std=c++11 "; } //assemble flag command += "-c "; //turn off fixit info command += "-fno-diagnostics-fixit-info -fno-caret-diagnostics "; //set disabled warning flags ArrayList<String>& disabledWarnings = projData.getProjectSettings().getDisabledWarnings(); for(int i=0; i<disabledWarnings.size(); i++) { String warning = disabledWarnings.get(i); if(warning.length()>2 && warning.charAt(0)=='-' && warning.charAt(1)=='W') { String noWarning = (String)"-Wno-" + warning.substring(2) + ' '; command += noWarning; } } //user-specified compiler flags ArrayList<String>& flags = projData.getProjectSettings().getAssemblerFlags(); for(int i=0; i<flags.size(); i++) { String& flag = flags.get(i); command += flag + " "; } //source file command += (String)"\"" + file + "\" "; //output file command += (String)"-o \"" + outputFile + "\""; return command; }
void CompilerTools_fillProjectVarsInString(String& str, const ProjectData& projData) { str.replace("${PRODUCT_NAME}", projData.getProductName()); str.replace("${EXECUTABLE_NAME}", projData.getExecutableName()); str.replace("${BUNDLE_IDENTIFIER}", projData.getBundleIdentifier()); }