diff options
| -rw-r--r-- | src/libctor.h | 6 | ||||
| -rw-r--r-- | src/task_cc.cc | 11 | 
2 files changed, 15 insertions, 2 deletions
| diff --git a/src/libctor.h b/src/libctor.h index f80a5c5..b539910 100644 --- a/src/libctor.h +++ b/src/libctor.h @@ -44,8 +44,14 @@ struct Source  	Source(const char* file, Language lang) : file(file), language(lang) {}  	Source(const std::string& file, Language lang) : file(file), language(lang) {} +	Source(const char* file, const char* output) : file(file), output(output) {} +	Source(const std::string& file, const std::string& output) : file(file), output(output) {} +	Source(const char* file, Language lang, const char* output) : file(file), language(lang), output(output) {} +	Source(const std::string& file, Language lang, const std::string& output) : file(file), language(lang), output(output) {} +  	std::string file;  	Language language{Language::Auto}; +	std::string output{};  };  struct Flags diff --git a/src/task_cc.cc b/src/task_cc.cc index 673c16d..ee25abf 100644 --- a/src/task_cc.cc +++ b/src/task_cc.cc @@ -51,8 +51,15 @@ TaskCC::TaskCC(const BuildConfiguration& config, const Settings& settings,  		break;  	} -	_targetFile = base; -	_targetFile += ".o"; +	if(source.output.empty()) +	{ +		_targetFile = base; +		_targetFile += ".o"; +	} +	else +	{ +		_targetFile = source.output; +	}  	depsFile = targetFile().parent_path() / targetFile().stem();  	depsFile += ".d";  	flagsFile = targetFile().parent_path() / targetFile().stem(); | 
