diff --git a/bin/test/data/log/test_log.txt b/bin/test/data/log/test_log.txt index c99f7782..64a9ae4b 100644 --- a/bin/test/data/log/test_log.txt +++ b/bin/test/data/log/test_log.txt @@ -1,3 +1,174 @@ +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml +Settings.cpp WARNING: File for Settings not found: data/TestSettings.xml Token.cpp ERROR: Location Id was not referenced by this Token. Node.cpp WARNING: Cannot change NodeType after it was already set from namespace to class Edge.cpp ERROR: Nodes are not plain copies. @@ -55,3 +226,5 @@ TextAccess.cpp WARNING: Line numbers start with one, is 0 TextAccess.cpp WARNING: Line numbers start with one, is 0 TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries. TokenLocationCollection.cpp ERROR: Can't create TokenLocation with wrong boundaries. +SolutionParserVisualStudio.cpp INFO: Found 24 additional include paths +SolutionParserVisualStudio.cpp INFO: Found 450 code files diff --git a/src/lib/utility/solution/SolutionParserUtility.cpp b/src/lib/utility/solution/SolutionParserUtility.cpp index 1d4b0785..051438a8 100644 --- a/src/lib/utility/solution/SolutionParserUtility.cpp +++ b/src/lib/utility/solution/SolutionParserUtility.cpp @@ -7,6 +7,9 @@ #include "boost/filesystem/path.hpp" #include "boost/filesystem.hpp" +std::vector SolutionParserUtility::m_ideMacros; +std::map SolutionParserUtility::m_ideMacroValues; + TiXmlElement* SolutionParserUtility::getFirstTagByName(TiXmlElement* root, const std::string& tag) { TiXmlElement* element = root; @@ -246,7 +249,18 @@ std::vector SolutionParserUtility::resolveEnvironmentVariables(cons for (unsigned int i = 0; i < paths.size(); i++) { - resolvedPaths.push_back(findAndResolveEnvironmentVariable(paths[i])); + std::string resolvedPath = ""; + + try + { + resolvedPath = findAndResolveEnvironmentVariable(paths[i]); + + resolvedPaths.push_back(resolvedPath); + } + catch (std::exception &e) + { + LOG_ERROR_STREAM(<< "Failed to resolve environment variable, exception was: \"" << e.what() << "\""); + } } return resolvedPaths; @@ -263,7 +277,29 @@ std::string SolutionParserUtility::findAndResolveEnvironmentVariable(const std:: size_t endPos = path.substr(pos).find(")"); std::string envVariable = path.substr(pos + 2, (endPos - 2) - pos); - std::string envPath = getenv(envVariable.c_str()); + + std::string envPath = ""; + + std::string macro = checkIsIdeMacro(envVariable); + if (macro != "") + { + LOG_WARNING_STREAM(<< "Encountered IDE macro \"" << macro << "\""); + + if (m_ideMacroValues.find(macro) == m_ideMacroValues.end()) + { + LOG_WARNING_STREAM(<< "Could not resolve IDE macro \"" << macro << "\""); + + return ""; + } + else + { + envPath = m_ideMacroValues[macro]; + } + } + else + { + envPath = getenv(envVariable.c_str()); + } std::string prePath = path.substr(0, pos); std::string postPath = path.substr(endPos + 1); @@ -308,3 +344,16 @@ std::vector SolutionParserUtility::makePathsCanonical(const std::ve return canonicalPaths; } + +std::string SolutionParserUtility::checkIsIdeMacro(const std::string& text) +{ + for (unsigned int i = 0; i < m_ideMacros.size(); i++) + { + if (text == m_ideMacros[i]) + { + return m_ideMacros[i]; + } + } + + return ""; +} diff --git a/src/lib/utility/solution/SolutionParserUtility.h b/src/lib/utility/solution/SolutionParserUtility.h index 2b2e2811..91ffd492 100644 --- a/src/lib/utility/solution/SolutionParserUtility.h +++ b/src/lib/utility/solution/SolutionParserUtility.h @@ -1,6 +1,7 @@ #ifndef SOLUTION_PARSER_UTILITY_H #define SOLUTION_PARSER_UTILITY_H +#include #include #include @@ -20,6 +21,11 @@ public: static std::vector resolveEnvironmentVariables(const std::vector& paths); static std::string findAndResolveEnvironmentVariable(const std::string& path); static std::vector makePathsCanonical(const std::vector& paths); + + static std::string checkIsIdeMacro(const std::string& text); // returns matching macro or empty string if no match was found + + static std::vector m_ideMacros; + static std::map m_ideMacroValues; // to replace macros with known values }; #endif // SOLUTION_PARSER_UTILITY_H diff --git a/src/lib/utility/solution/SolutionParserVisualStudio.cpp b/src/lib/utility/solution/SolutionParserVisualStudio.cpp index de0ac92b..c2a41b93 100644 --- a/src/lib/utility/solution/SolutionParserVisualStudio.cpp +++ b/src/lib/utility/solution/SolutionParserVisualStudio.cpp @@ -17,6 +17,45 @@ SolutionParserVisualStudio::SolutionParserVisualStudio() m_compatibilityFlags.push_back("-fms-extensions"); m_compatibilityFlags.push_back("-fms-compatibility"); m_compatibilityFlags.push_back("-fms-compatibility-version=19.00"); + + SolutionParserUtility::m_ideMacros.clear(); + + SolutionParserUtility::m_ideMacros.push_back("RemoteMachine"); + SolutionParserUtility::m_ideMacros.push_back("Configuration"); + SolutionParserUtility::m_ideMacros.push_back("Platform"); + SolutionParserUtility::m_ideMacros.push_back("ParentName"); + SolutionParserUtility::m_ideMacros.push_back("RootNameSpace"); + SolutionParserUtility::m_ideMacros.push_back("IntDir"); + SolutionParserUtility::m_ideMacros.push_back("OutDir"); + SolutionParserUtility::m_ideMacros.push_back("DevEnvDir"); + SolutionParserUtility::m_ideMacros.push_back("InputPath"); + SolutionParserUtility::m_ideMacros.push_back("InputName"); + SolutionParserUtility::m_ideMacros.push_back("InputFileName"); + SolutionParserUtility::m_ideMacros.push_back("InputExt"); + SolutionParserUtility::m_ideMacros.push_back("ProjectDir"); + SolutionParserUtility::m_ideMacros.push_back("ProjectPath"); + SolutionParserUtility::m_ideMacros.push_back("ProjectName"); + SolutionParserUtility::m_ideMacros.push_back("ProjectFileName"); + SolutionParserUtility::m_ideMacros.push_back("ProjectExt"); + SolutionParserUtility::m_ideMacros.push_back("SolutionDir"); + SolutionParserUtility::m_ideMacros.push_back("SolutionPath"); + SolutionParserUtility::m_ideMacros.push_back("SolutionName"); + SolutionParserUtility::m_ideMacros.push_back("SolutionExt"); + SolutionParserUtility::m_ideMacros.push_back("TargetDir"); + SolutionParserUtility::m_ideMacros.push_back("TargetPath"); + SolutionParserUtility::m_ideMacros.push_back("TargetName"); + SolutionParserUtility::m_ideMacros.push_back("TargetFileName"); + SolutionParserUtility::m_ideMacros.push_back("VSInstallDir"); + SolutionParserUtility::m_ideMacros.push_back("VCInstallDir"); + SolutionParserUtility::m_ideMacros.push_back("FrameworkDir"); + SolutionParserUtility::m_ideMacros.push_back("FrameworkVersion"); + SolutionParserUtility::m_ideMacros.push_back("FrameworkSDKDir"); + SolutionParserUtility::m_ideMacros.push_back("WebDeployPath"); + SolutionParserUtility::m_ideMacros.push_back("WebDeployRoot"); + SolutionParserUtility::m_ideMacros.push_back("SafeParentName"); + SolutionParserUtility::m_ideMacros.push_back("SafeInputName"); + SolutionParserUtility::m_ideMacros.push_back("SafeRootNamespace"); + SolutionParserUtility::m_ideMacros.push_back("FxCopDir"); } SolutionParserVisualStudio::~SolutionParserVisualStudio() @@ -155,11 +194,6 @@ std::vector SolutionParserVisualStudio::getCompileFlags() compilerFlags.push_back(m_compatibilityFlags[i]); } - //for (unsigned int i = 0; i < compilerFlags.size(); i++) - //{ - // LOG_INFO_STREAM(<< "flag: " << compilerFlags[i]); - //} - std::set s(compilerFlags.begin(), compilerFlags.end()); compilerFlags.assign(s.begin(), s.end()); @@ -168,13 +202,29 @@ std::vector SolutionParserVisualStudio::getCompileFlags() ProjectSettings SolutionParserVisualStudio::getProjectSettings(const std::string& solutionFilePath) { + LOG_INFO_STREAM(<< "Starting to parse VS solution"); + + LOG_INFO_STREAM(<< "Opening solution file"); + openSolutionFile(solutionFilePath); + SolutionParserUtility::m_ideMacroValues.clear(); + SolutionParserUtility::m_ideMacroValues["SolutionPath"] = solutionFilePath; + SolutionParserUtility::m_ideMacroValues["SolutionDir"] = m_solutionPath.substr(0, m_solutionPath.size() - 1); // remove trailing slash, would cause problems during path resolving + SolutionParserUtility::m_ideMacroValues["SolutionName"] = getSolutionName(); + SolutionParserUtility::m_ideMacroValues["SolutionFileName"] = m_solutionName; + + LOG_INFO_STREAM(<< "Setting meta information"); + ProjectSettings settings; settings.setProjectName(getSolutionName()); settings.setProjectFileLocation(getSolutionPath()); settings.setVisualStudioSolutionPath(solutionFilePath); + LOG_INFO_STREAM(<< "Parsing project files"); + + LOG_INFO_STREAM(<< "Setting source files"); + std::vector sourceFiles = getProjectItems(); std::vector sourcePaths; for (const std::string& p : sourceFiles) @@ -182,6 +232,8 @@ ProjectSettings SolutionParserVisualStudio::getProjectSettings(const std::string sourcePaths.push_back(FilePath(p)); } + LOG_INFO_STREAM(<< "Parsing include files"); + std::vector includePaths = getIncludePaths(); std::vector headerPaths; @@ -190,12 +242,16 @@ ProjectSettings SolutionParserVisualStudio::getProjectSettings(const std::string headerPaths.push_back(FilePath(p)); } + LOG_INFO_STREAM(<< "Setting compile flags"); + std::vector compilerFlags = getCompileFlags(); settings.setCompilerFlags(compilerFlags); settings.setSourcePaths(sourcePaths); settings.setHeaderSearchPaths(headerPaths); + LOG_INFO_STREAM(<< "Done parsing VS solution"); + return settings; } @@ -388,6 +444,8 @@ std::vector SolutionParserVisualStudio::findProjectItems() std::set s(projectItems.begin(), projectItems.end()); projectItems.assign(s.begin(), s.end()); + LOG_INFO_STREAM(<< "Found " << projectItems.size() << " code files"); + projectItems = SolutionParserUtility::resolveEnvironmentVariables(projectItems); projectItems = makePathsAbsolute(projectItems); @@ -434,6 +492,8 @@ std::vector SolutionParserVisualStudio::findIncludePaths() std::set s(includePaths.begin(), includePaths.end()); includePaths.assign(s.begin(), s.end()); + LOG_INFO_STREAM(<< "Found " << includePaths.size() << " additional include paths"); + includePaths = SolutionParserUtility::resolveEnvironmentVariables(includePaths); includePaths = makePathsAbsolute(includePaths); @@ -527,6 +587,11 @@ std::vector SolutionParserVisualStudio::seperateIncludePaths(const pos = paths.find(seperator); } + if (paths.size() > 0) + { + seperatedPaths.push_back(paths); + } + return seperatedPaths; } diff --git a/src/lib/utility/solution/SolutionParserVisualStudio.h b/src/lib/utility/solution/SolutionParserVisualStudio.h index d87c7285..c08942d1 100644 --- a/src/lib/utility/solution/SolutionParserVisualStudio.h +++ b/src/lib/utility/solution/SolutionParserVisualStudio.h @@ -48,4 +48,46 @@ private: std::vector m_compatibilityFlags; }; +// list of possible vs ide macros +// source: https://msdn.microsoft.com/en-us/library/c02as0cs.aspx +/* +"RemoteMachine", +"Configuration", +"Platform", +"ParentName", +"RootNameSpace", +"IntDir", +"OutDir", +"DevEnvDir", +"InputDir", +"InputPath", +"InputName", +"InputFileName", +"InputExt", +"ProjectDir", +"ProjectPath", +"ProjectName", +"ProjectFileName", +"ProjectExt", +"SolutionDir", +"SolutionPath", +"SolutionName", +"SolutionExt", +"TargetDir", +"TargetPath", +"TargetName", +"TargetFileName", +"VSInstallDir", +"VCInstallDir", +"FrameworkDir", +"FrameworkVersion", +"FrameworkSDKDir", +"WebDeployPath", +"WebDeployRoot", +"SafeParentName", +"SafeInputName", +"SafeRootNamespace", +"FxCopDir" +*/ + #endif // SOLUTION_PARSER_VISUAL_STUDIO_H diff --git a/src/test/VsSolutionParserTestSuite.h b/src/test/VsSolutionParserTestSuite.h index 8f9fc8ad..f194b096 100644 --- a/src/test/VsSolutionParserTestSuite.h +++ b/src/test/VsSolutionParserTestSuite.h @@ -47,7 +47,7 @@ public: parser.openSolutionFile("data/vsSolutionParserTestSuite/Coati.sln"); std::vector includePaths = parser.getIncludePathsNonCanonical(); - TS_ASSERT_EQUALS(23, includePaths.size()); + TS_ASSERT_EQUALS(24, includePaths.size()); } void test_get_()