logic: vs solution parsing fix
Fixed issue with vs internal macros
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -7,6 +7,9 @@
|
||||
#include "boost/filesystem/path.hpp"
|
||||
#include "boost/filesystem.hpp"
|
||||
|
||||
std::vector<std::string> SolutionParserUtility::m_ideMacros;
|
||||
std::map<std::string, std::string> SolutionParserUtility::m_ideMacroValues;
|
||||
|
||||
TiXmlElement* SolutionParserUtility::getFirstTagByName(TiXmlElement* root, const std::string& tag)
|
||||
{
|
||||
TiXmlElement* element = root;
|
||||
@@ -246,7 +249,18 @@ std::vector<std::string> 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<std::string> 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 "";
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef SOLUTION_PARSER_UTILITY_H
|
||||
#define SOLUTION_PARSER_UTILITY_H
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -20,6 +21,11 @@ public:
|
||||
static std::vector<std::string> resolveEnvironmentVariables(const std::vector<std::string>& paths);
|
||||
static std::string findAndResolveEnvironmentVariable(const std::string& path);
|
||||
static std::vector<std::string> makePathsCanonical(const std::vector<std::string>& paths);
|
||||
|
||||
static std::string checkIsIdeMacro(const std::string& text); // returns matching macro or empty string if no match was found
|
||||
|
||||
static std::vector<std::string> m_ideMacros;
|
||||
static std::map<std::string, std::string> m_ideMacroValues; // to replace macros with known values
|
||||
};
|
||||
|
||||
#endif // SOLUTION_PARSER_UTILITY_H
|
||||
|
||||
@@ -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<std::string> 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<std::string> s(compilerFlags.begin(), compilerFlags.end());
|
||||
compilerFlags.assign(s.begin(), s.end());
|
||||
|
||||
@@ -168,13 +202,29 @@ std::vector<std::string> 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<std::string> sourceFiles = getProjectItems();
|
||||
std::vector<FilePath> 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<std::string> includePaths = getIncludePaths();
|
||||
|
||||
std::vector<FilePath> headerPaths;
|
||||
@@ -190,12 +242,16 @@ ProjectSettings SolutionParserVisualStudio::getProjectSettings(const std::string
|
||||
headerPaths.push_back(FilePath(p));
|
||||
}
|
||||
|
||||
LOG_INFO_STREAM(<< "Setting compile flags");
|
||||
|
||||
std::vector<std::string> 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<std::string> SolutionParserVisualStudio::findProjectItems()
|
||||
std::set<std::string> 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<std::string> SolutionParserVisualStudio::findIncludePaths()
|
||||
std::set<std::string> 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<std::string> SolutionParserVisualStudio::seperateIncludePaths(const
|
||||
pos = paths.find(seperator);
|
||||
}
|
||||
|
||||
if (paths.size() > 0)
|
||||
{
|
||||
seperatedPaths.push_back(paths);
|
||||
}
|
||||
|
||||
return seperatedPaths;
|
||||
}
|
||||
|
||||
|
||||
@@ -48,4 +48,46 @@ private:
|
||||
std::vector<std::string> 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
|
||||
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
parser.openSolutionFile("data/vsSolutionParserTestSuite/Coati.sln");
|
||||
std::vector<std::string> includePaths = parser.getIncludePathsNonCanonical();
|
||||
|
||||
TS_ASSERT_EQUALS(23, includePaths.size());
|
||||
TS_ASSERT_EQUALS(24, includePaths.size());
|
||||
}
|
||||
|
||||
void test_get_()
|
||||
|
||||
Reference in New Issue
Block a user