Add exclude source and header compilation
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
<makegen>
|
||||
<configuration name="Release">
|
||||
<generatehfile>false</generatehfile>
|
||||
<hfilename>MakeGen.h</hfilename>
|
||||
<outputdir>bin/</outputdir>
|
||||
<outputname>makegen</outputname>
|
||||
<outputtype>executable</outputtype>
|
||||
@@ -13,7 +12,6 @@
|
||||
<cflag>-g3</cflag>
|
||||
<cflag>-w</cflag>
|
||||
<generatehfile>false</generatehfile>
|
||||
<hfilename>MakeGen.h</hfilename>
|
||||
<outputdir>bin/</outputdir>
|
||||
<outputname>makegen</outputname>
|
||||
<outputtype>executable</outputtype>
|
||||
|
||||
+10
-2
@@ -53,7 +53,9 @@ Valid settings are:
|
||||
define Preprocessor define
|
||||
cflag g++ compiler flag
|
||||
lflag g++ linking flag
|
||||
dependency Project which current project depends on)");
|
||||
dependency Project which current project depends on
|
||||
excludesource Exclude source file from compiling
|
||||
excludeheader Exclude header file from project h-file)");
|
||||
}
|
||||
|
||||
void ConfigCLI::DisplayRemoveHelp()
|
||||
@@ -70,7 +72,9 @@ Valid settings are
|
||||
define Preprocessor define
|
||||
cflag g++ compiler flag
|
||||
lflag g++ linking flag
|
||||
dependency Project which current project depends on)");
|
||||
dependency Project which current project depends on
|
||||
excludesource Exclude source file from compiling
|
||||
excludeheader Exclude header file from project h-file)");
|
||||
}
|
||||
|
||||
void ConfigCLI::DisplaySetHelp()
|
||||
@@ -109,6 +113,8 @@ Valid settings are:
|
||||
cflag g++ compiler flag
|
||||
lflag g++ linking flag
|
||||
dependency Project which current project depends on
|
||||
excludesource Exclude source file from compiling
|
||||
excludeheader Exclude header file from project h-file
|
||||
outputdir Directory of the compiled output
|
||||
outputname Name of the output executable/library
|
||||
outputtype Type of the output, valid values are executable, sharedlibrary
|
||||
@@ -134,6 +140,8 @@ ConfigSetting ConfigCLI::CLIStringToSetting(const std::string& s)
|
||||
{"define", ConfigSetting::Define},
|
||||
{"cflag", ConfigSetting::CFlag},
|
||||
{"lflag", ConfigSetting::LFlag},
|
||||
{"excludesource", ConfigSetting::ExcludeSource},
|
||||
{"excludeheader", ConfigSetting::ExcludeHeader},
|
||||
{"dependency", ConfigSetting::Dependency},
|
||||
{"genhfile", ConfigSetting::GenerateHFile},
|
||||
};
|
||||
|
||||
+1
-1
@@ -316,7 +316,7 @@ XMLObject& ConfigFile::GetConfiguration()
|
||||
|
||||
const std::string& ConfigFile::GetConfigPath() const
|
||||
{
|
||||
return configPath;;
|
||||
return configPath;
|
||||
}
|
||||
|
||||
ConfigFile& ConfigFile::GetDependencyConfig(size_t i)
|
||||
|
||||
+13
-1
@@ -18,7 +18,7 @@ struct ConfigCache
|
||||
enum class ConfigSetting
|
||||
{
|
||||
// vectors
|
||||
Library = 0, LibraryDir = 1, IncludeDir = 2, Define = 3, Dependency = 4, CFlag = 5, LFlag = 6,
|
||||
Library = 0, LibraryDir = 1, IncludeDir = 2, Define = 3, Dependency = 4, CFlag = 5, LFlag = 6, ExcludeSource = 7, ExcludeHeader = 8,
|
||||
// Strings
|
||||
SourceDir = 32, OutputDir = 33, OutputName = 34, OutputType = 35, ProjectName = 36, HFileName = 37,
|
||||
// Bools
|
||||
@@ -59,6 +59,10 @@ struct ConfigUtils
|
||||
return "cflag";
|
||||
case ConfigSetting::LFlag:
|
||||
return "lflag";
|
||||
case ConfigSetting::ExcludeSource:
|
||||
return "excludesource";
|
||||
case ConfigSetting::ExcludeHeader:
|
||||
return "excludeheader";
|
||||
case ConfigSetting::GenerateHFile:
|
||||
return "generatehfile";
|
||||
case ConfigSetting::Invalid:
|
||||
@@ -84,6 +88,8 @@ struct ConfigUtils
|
||||
case ConfigSetting::Define:
|
||||
case ConfigSetting::CFlag:
|
||||
case ConfigSetting::LFlag:
|
||||
case ConfigSetting::ExcludeSource:
|
||||
case ConfigSetting::ExcludeHeader:
|
||||
case ConfigSetting::GenerateHFile:
|
||||
return false;
|
||||
default:
|
||||
@@ -110,6 +116,8 @@ struct ConfigUtils
|
||||
case ConfigSetting::Define:
|
||||
case ConfigSetting::CFlag:
|
||||
case ConfigSetting::LFlag:
|
||||
case ConfigSetting::ExcludeHeader:
|
||||
case ConfigSetting::ExcludeSource:
|
||||
case ConfigSetting::GenerateHFile:
|
||||
case ConfigSetting::Invalid:
|
||||
return false;
|
||||
@@ -127,6 +135,8 @@ struct ConfigUtils
|
||||
case ConfigSetting::Define:
|
||||
case ConfigSetting::CFlag:
|
||||
case ConfigSetting::LFlag:
|
||||
case ConfigSetting::ExcludeHeader:
|
||||
case ConfigSetting::ExcludeSource:
|
||||
return true;
|
||||
case ConfigSetting::SourceDir:
|
||||
case ConfigSetting::OutputDir:
|
||||
@@ -158,6 +168,8 @@ struct ConfigUtils
|
||||
case ConfigSetting::Define:
|
||||
case ConfigSetting::CFlag:
|
||||
case ConfigSetting::LFlag:
|
||||
case ConfigSetting::ExcludeHeader:
|
||||
case ConfigSetting::ExcludeSource:
|
||||
case ConfigSetting::Invalid:
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -25,8 +25,14 @@ void HFileGen::Create(ConfigFile& conf)
|
||||
}
|
||||
}
|
||||
|
||||
const std::vector<std::string>& excludeHeaders = conf.GetSettingVectorString(ConfigSetting::ExcludeHeader);
|
||||
std::ofstream os(path + "/" + conf.GetSettingString(ConfigSetting::HFileName));
|
||||
os << "#pragma once" << std::endl << std::endl;
|
||||
for(auto&& hFile : hFiles)
|
||||
{
|
||||
std::string headerFile = conf.GetSettingString(ConfigSetting::SourceDir) + hFile;
|
||||
auto it = std::find(excludeHeaders.begin(), excludeHeaders.end(), headerFile);
|
||||
if(it == excludeHeaders.end())
|
||||
os << "#include <" << hFile << ">" << std::endl;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ void Utils::GetCppFiles(ConfigFile& conf, std::set<std::string>& cppFiles)
|
||||
std::vector<std::string> files;
|
||||
std::string path = conf.GetConfigPath() + conf.GetSettingString(ConfigSetting::SourceDir);
|
||||
FileUtils::GetAllFiles(path, files);
|
||||
const std::vector<std::string>& excludeSources = conf.GetSettingVectorString(ConfigSetting::ExcludeSource);
|
||||
|
||||
for(auto it = files.begin(); it!=files.end();++it)
|
||||
{
|
||||
@@ -31,11 +32,16 @@ void Utils::GetCppFiles(ConfigFile& conf, std::set<std::string>& cppFiles)
|
||||
std::string extension = it->substr(extensionPos+1);
|
||||
std::string filename = it->substr(path.length());
|
||||
if(extension == "cpp" || extension == "c")
|
||||
{
|
||||
std::string sourceFile =conf.GetSettingString(ConfigSetting::SourceDir) + filename;
|
||||
auto it = std::find(excludeSources.begin(), excludeSources.end(), sourceFile);
|
||||
if(it == excludeSources.end())
|
||||
{
|
||||
cppFiles.emplace(filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Utils::GetCppAndHFiles(ConfigFile& conf, std::set<HFile>& hFiles, std::set<std::string>& cppFiles)
|
||||
@@ -43,6 +49,7 @@ void Utils::GetCppAndHFiles(ConfigFile& conf, std::set<HFile>& hFiles, std::set<
|
||||
std::vector<std::string> files;
|
||||
std::string path = conf.GetConfigPath() + conf.GetSettingString(ConfigSetting::SourceDir);
|
||||
FileUtils::GetAllFiles(path,files);
|
||||
const std::vector<std::string>& excludeSources = conf.GetSettingVectorString(ConfigSetting::ExcludeSource);
|
||||
// include paramenter with the path of the file
|
||||
// For example src/graphics/Window.h -> graphics/Window.h if src is a src folder
|
||||
for(auto it = files.begin(); it!=files.end();++it)
|
||||
@@ -53,9 +60,16 @@ void Utils::GetCppAndHFiles(ConfigFile& conf, std::set<HFile>& hFiles, std::set<
|
||||
std::string extension = it->substr(extensionPos+1);
|
||||
std::string filename = it->substr(path.length());
|
||||
if(extension == "cpp" || extension == "c")
|
||||
{
|
||||
std::string sourceFile =conf.GetSettingString(ConfigSetting::SourceDir) + filename;
|
||||
auto it = std::find(excludeSources.begin(), excludeSources.end(), sourceFile);
|
||||
if(it == excludeSources.end())
|
||||
{
|
||||
cppFiles.emplace(filename);
|
||||
}
|
||||
else
|
||||
LOG_INFO("Excluding: ", sourceFile);
|
||||
}
|
||||
else if(extension == "hpp" || extension == "h")
|
||||
{
|
||||
hFiles.emplace(HFile{filename,path,false});
|
||||
|
||||
Reference in New Issue
Block a user