diff options
-rw-r--r-- | cppbuild.cc | 8 | ||||
-rw-r--r-- | libcppbuild.cc | 15 | ||||
-rw-r--r-- | task.cc | 7 | ||||
-rw-r--r-- | task.h | 3 |
4 files changed, 25 insertions, 8 deletions
diff --git a/cppbuild.cc b/cppbuild.cc index b06b082..275512f 100644 --- a/cppbuild.cc +++ b/cppbuild.cc @@ -14,6 +14,12 @@ BuildConfiguration configs() // source files "src/foo.cc", "src/bar.cc", - } + }, + // cxx flags + "-g -Wall -Werror -std=c++17", + // c flags + "-g -Wall -Werror", + // linker flags + "-lm", }; } diff --git a/libcppbuild.cc b/libcppbuild.cc index 46f1bfc..35eff8f 100644 --- a/libcppbuild.cc +++ b/libcppbuild.cc @@ -11,20 +11,23 @@ int main(int argc, const char* argv[]) { Settings settings; + + // TODO: Set from commandline settings.builddir = "build/foo"; + std::filesystem::path builddir(settings.builddir); std::filesystem::create_directories(builddir); - auto project = configs(); - std::string output = builddir / project.target; - const auto& files = project.sources; + auto config = configs(); + std::string output = builddir / config.target; + const auto& files = config.sources; std::vector<std::string> objects; std::vector<Task> tasks; for(const auto& file : files) { - tasks.emplace_back(project, settings, file); + tasks.emplace_back(config, settings, file); objects.push_back(tasks.back().targetFile); } @@ -91,7 +94,9 @@ int main(int argc, const char* argv[]) { objectlist += object + " "; } - std::string compiler = "g++ " + objectlist + " -o " + output; + std::string compiler = "g++ " + objectlist + " " + + config.ldflags + " " + + "-o " + output; std::cout << compiler << "\n"; if(system(compiler.data())) { @@ -84,6 +84,8 @@ std::vector<std::string> readDeps(const std::string& depFile) Task::Task(const BuildConfiguration& config, const Settings& settings, const std::string& source) + : config(config) + , settings(settings) { sourceFile = source; targetFile = settings.builddir / sourceFile.stem(); @@ -155,8 +157,9 @@ void Task::start() if(recompile) { std::string cmd = - "g++ -MMD -c " + std::string(sourceFile) + - " -o " + std::string(targetFile); + "g++ -MMD -c " + std::string(sourceFile) + " " + + config.cxxflags + " " + + "-o " + std::string(targetFile); std::cout << cmd << "\n"; if(system(cmd.data())) @@ -29,4 +29,7 @@ public: std::filesystem::path depsFile; std::future<int> future; + + const BuildConfiguration& config; + const Settings& settings; }; |