From c97c3221dd13186fa62918a0432aeb765cb19a18 Mon Sep 17 00:00:00 2001 From: Thraix Date: Tue, 3 Mar 2020 19:13:49 +0100 Subject: [PATCH] Add arguments and prearguments to executable file --- makegen.xml | 2 +- src/ConfigCLI.cpp | 12 ++++++++++-- src/ConfigUtils.h | 20 ++++++++++++++++---- src/Makefile.cpp | 11 ++++++++++- src/main.cpp | 2 +- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/makegen.xml b/makegen.xml index 09c15df..e548290 100644 --- a/makegen.xml +++ b/makegen.xml @@ -8,9 +8,9 @@ src/ - _DEBUG -g3 -w + _DEBUG false bin/ makegen diff --git a/src/ConfigCLI.cpp b/src/ConfigCLI.cpp index e6641fc..6bb5635 100644 --- a/src/ConfigCLI.cpp +++ b/src/ConfigCLI.cpp @@ -55,7 +55,9 @@ Valid settings are: 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)"); + excludeheader Exclude header file from project h-file + argument Command line argument for the executable + preargument Command line argument before the executabe, e.g. gdb)"); } void ConfigCLI::DisplayRemoveHelp() @@ -74,7 +76,9 @@ Valid settings are 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)"); + excludeheader Exclude header file from project h-file + argument Command line argument for the executable + preargument Command line argument before the executabe, e.g. gdb)"); } void ConfigCLI::DisplaySetHelp() @@ -115,6 +119,8 @@ Valid settings are: dependency Project which current project depends on excludesource Exclude source file from compiling excludeheader Exclude header file from project h-file + argument Command line argument for the executable + preargument Command line argument before the executabe, e.g. gdb outputdir Directory of the compiled output outputname Name of the output executable/library outputtype Type of the output, valid values are executable, sharedlibrary @@ -142,6 +148,8 @@ ConfigSetting ConfigCLI::CLIStringToSetting(const std::string& s) {"lflag", ConfigSetting::LFlag}, {"excludesource", ConfigSetting::ExcludeSource}, {"excludeheader", ConfigSetting::ExcludeHeader}, + {"preargument", ConfigSetting::ExecPreArgument}, + {"argument", ConfigSetting::ExecArgument}, {"dependency", ConfigSetting::Dependency}, {"genhfile", ConfigSetting::GenerateHFile}, }; diff --git a/src/ConfigUtils.h b/src/ConfigUtils.h index c387b7f..330dd7b 100644 --- a/src/ConfigUtils.h +++ b/src/ConfigUtils.h @@ -1,7 +1,7 @@ #pragma once -#include "Common.h" -#include "FileUtils.h" +#include "Common.h" +#include "FileUtils.h" #include #include @@ -18,13 +18,13 @@ struct ConfigCache enum class ConfigSetting { // vectors - Library = 0, LibraryDir = 1, IncludeDir = 2, Define = 3, Dependency = 4, CFlag = 5, LFlag = 6, ExcludeSource = 7, ExcludeHeader = 8, + Library = 0, LibraryDir = 1, IncludeDir = 2, Define = 3, Dependency = 4, CFlag = 5, LFlag = 6, ExcludeSource = 7, ExcludeHeader = 8, ExecPreArgument = 9, ExecArgument = 10, // Strings SourceDir = 32, OutputDir = 33, OutputName = 34, OutputType = 35, ProjectName = 36, HFileName = 37, // Bools GenerateHFile = 64, // Other - Invalid = 1024 + Invalid = 1024 }; struct ConfigUtils @@ -63,6 +63,10 @@ struct ConfigUtils return "excludesource"; case ConfigSetting::ExcludeHeader: return "excludeheader"; + case ConfigSetting::ExecPreArgument: + return "preargument"; + case ConfigSetting::ExecArgument: + return "argument"; case ConfigSetting::GenerateHFile: return "generatehfile"; case ConfigSetting::Invalid: @@ -90,6 +94,8 @@ struct ConfigUtils case ConfigSetting::LFlag: case ConfigSetting::ExcludeSource: case ConfigSetting::ExcludeHeader: + case ConfigSetting::ExecPreArgument: + case ConfigSetting::ExecArgument: case ConfigSetting::GenerateHFile: return false; default: @@ -118,6 +124,8 @@ struct ConfigUtils case ConfigSetting::LFlag: case ConfigSetting::ExcludeHeader: case ConfigSetting::ExcludeSource: + case ConfigSetting::ExecPreArgument: + case ConfigSetting::ExecArgument: case ConfigSetting::GenerateHFile: case ConfigSetting::Invalid: return false; @@ -137,6 +145,8 @@ struct ConfigUtils case ConfigSetting::LFlag: case ConfigSetting::ExcludeHeader: case ConfigSetting::ExcludeSource: + case ConfigSetting::ExecPreArgument: + case ConfigSetting::ExecArgument: return true; case ConfigSetting::SourceDir: case ConfigSetting::OutputDir: @@ -170,6 +180,8 @@ struct ConfigUtils case ConfigSetting::LFlag: case ConfigSetting::ExcludeHeader: case ConfigSetting::ExcludeSource: + case ConfigSetting::ExecPreArgument: + case ConfigSetting::ExecArgument: case ConfigSetting::Invalid: return false; } diff --git a/src/Makefile.cpp b/src/Makefile.cpp index e6fc699..59112dd 100755 --- a/src/Makefile.cpp +++ b/src/Makefile.cpp @@ -128,7 +128,16 @@ void Makefile::Save(ConfigFile& conf, unsigned int flags) outputFile << "run: all" << std::endl; if(outputtype == "executable") { - outputFile << "\t@./$(OUTPUT)" << std::endl; + std::vector& prearguments = conf.GetSettingVectorString(ConfigSetting::ExecPreArgument); + std::vector& arguments = conf.GetSettingVectorString(ConfigSetting::ExecArgument); + + outputFile << "\t@"; + for(auto&& preargument : prearguments) + outputFile << preargument << " "; + outputFile << "./$(OUTPUT)"; + for(auto&& argument : arguments) + outputFile << " " << argument; + outputFile << std::endl; } // Rebuild diff --git a/src/main.cpp b/src/main.cpp index e29877e..45923ac 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,8 +15,8 @@ void PrintHelp() { + LOG_INFO("MakeGen ", MAKEGEN_VERSION); LOG_INFO(1+(char*)R"( -MakeGen ", MAKEGEN_VERSIO MakeGen is a utility tool to generate and run Makefiles in a simple manner. By default it always compiles code with parallell jobs.