Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 12 additions & 8 deletions CPPBuild/CPPBuild.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -206,11 +206,12 @@ void CPPBuild::generateWorkspace(const JsonValue& properties)
#endif
}

int CPPBuild::postBuild(std::string targetName, std::string configuration)
int CPPBuild::postBuild(std::string targetName, std::string configuration, bool nodeps)
{
BuildSetup setup = loadBuildSetup();
PackageManager packages(workDir);
for (std::string name : getBuildOrder(setup, targetName, configuration))
std::vector<std::string> order = nodeps ? std::vector<std::string>{ targetName } : getBuildOrder(setup, targetName, configuration);
for (std::string name : order)
{
Target target(setup, &packages, workDir, name, configuration);
int result = target.postBuild();
Expand All @@ -220,11 +221,12 @@ int CPPBuild::postBuild(std::string targetName, std::string configuration)
return 0;
}

int CPPBuild::build(std::string targetName, std::string configuration)
int CPPBuild::build(std::string targetName, std::string configuration, bool nodeps)
{
BuildSetup setup = loadBuildSetup();
PackageManager packages(workDir);
for (std::string name : getBuildOrder(setup, targetName, configuration))
std::vector<std::string> order = nodeps ? std::vector<std::string>{ targetName } : getBuildOrder(setup, targetName, configuration);
for (std::string name : order)
{
Target target(setup, &packages, workDir, name, configuration);
int result = target.build();
Expand All @@ -234,22 +236,24 @@ int CPPBuild::build(std::string targetName, std::string configuration)
return 0;
}

void CPPBuild::clean(std::string targetName, std::string configuration)
void CPPBuild::clean(std::string targetName, std::string configuration, bool nodeps)
{
BuildSetup setup = loadBuildSetup();
PackageManager packages(workDir);
for (std::string name : getBuildOrder(setup, targetName, configuration))
std::vector<std::string> order = nodeps ? std::vector<std::string>{ targetName } : getBuildOrder(setup, targetName, configuration);
for (std::string name : order)
{
Target target(setup, &packages, workDir, name, configuration);
target.clean();
}
}

int CPPBuild::rebuild(std::string targetName, std::string configuration)
int CPPBuild::rebuild(std::string targetName, std::string configuration, bool nodeps)
{
BuildSetup setup = loadBuildSetup();
PackageManager packages(workDir);
for (std::string name : getBuildOrder(setup, targetName, configuration))
std::vector<std::string> order = nodeps ? std::vector<std::string>{ targetName } : getBuildOrder(setup, targetName, configuration);
for (std::string name : order)
{
Target target(setup, &packages, workDir, name, configuration);
int result = target.rebuild();
Expand Down
8 changes: 4 additions & 4 deletions CPPBuild/CPPBuild.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ class CPPBuild

void configure(std::string sourcePath);
void checkMakefile();
int build(std::string target, std::string configuration);
int rebuild(std::string target, std::string configuration);
int postBuild(std::string target, std::string configuration);
void clean(std::string target, std::string configuration);
int build(std::string target, std::string configuration, bool nodeps = false);
int rebuild(std::string target, std::string configuration, bool nodeps = false);
int postBuild(std::string target, std::string configuration, bool nodeps = false);
void clean(std::string target, std::string configuration, bool nodeps = false);
void createInstaller();
void createPackage();
void setProperty(std::string name, std::string value, bool global);
Expand Down
22 changes: 15 additions & 7 deletions CPPBuild/Main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ int main(int argc, char** argv)
}

CPPBuild app(workdir);

bool nodeps = false;
if (args.size() > 2 && args[2] == "--no-deps")
{
nodeps = true;
args.erase(args.begin() + 2);
}

if ((args.size() == 2 || args.size() == 3) && args[1] == "configure")
{
std::string sourcePath;
Expand All @@ -40,16 +48,16 @@ int main(int argc, char** argv)
}
else if (args.size() == 4 && args[1] == "build")
{
return app.build(args[2], args[3]);
return app.build(args[2], args[3], nodeps);
}
else if (args.size() == 4 && args[1] == "clean")
{
app.clean(args[2], args[3]);
app.clean(args[2], args[3], nodeps);
return 0;
}
else if (args.size() == 4 && args[1] == "rebuild")
{
return app.rebuild(args[2], args[3]);
return app.rebuild(args[2], args[3], nodeps);
}
else if (args.size() == 2 && args[1] == "create-installer")
{
Expand Down Expand Up @@ -82,10 +90,10 @@ int main(int argc, char** argv)
std::cout << "cppbuild configure [source path]" << std::endl;
std::cout << "cppbuild set [--global] <property> <value>" << std::endl;
std::cout << "cppbuild list" << std::endl;
std::cout << "cppbuild [--workdir <path>] build <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] clean <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] rebuild <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] postbuild <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] build [--no-deps] <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] clean [--no-deps] <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] rebuild [--no-deps] <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] postbuild [--no-deps] <target> <configuration>" << std::endl;
std::cout << "cppbuild [--workdir <path>] create-installer" << std::endl;
std::cout << "cppbuild [--workdir <path>] create-package" << std::endl;
return 1;
Expand Down
14 changes: 7 additions & 7 deletions CPPBuild/VSWorkspace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -712,19 +712,19 @@ void VSWorkspace::addTargetProject(const BuildTarget& targetDef)
projConfig->general.nmakePreprocessorDefinitions = configDefines;
projConfig->general.nmakeIncludeSearchPath = configIncludes;
projConfig->general.nmakeOutput = outputFile;
projConfig->general.nmakeBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) build " + projectName + " " + configName;
projConfig->general.nmakeCleanCommandLine = cppbuildexe + " --workdir $(SolutionDir) clean " + projectName + " " + configName;
projConfig->general.nmakeReBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) rebuild " + projectName + " " + configName;
projConfig->general.nmakeBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) build --no-deps " + projectName + " " + configName;
projConfig->general.nmakeCleanCommandLine = cppbuildexe + " --workdir $(SolutionDir) clean --no-deps " + projectName + " " + configName;
projConfig->general.nmakeReBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) rebuild --no-deps " + projectName + " " + configName;
}
else if (projectType == "custom")
{
projConfig->general.configurationType = "Makefile";
projConfig->general.nmakePreprocessorDefinitions = configDefines;
projConfig->general.nmakeIncludeSearchPath = configIncludes;
projConfig->general.nmakeOutput = outputFile;
projConfig->general.nmakeBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) build " + projectName + " " + configName;
projConfig->general.nmakeCleanCommandLine = cppbuildexe + " --workdir $(SolutionDir) clean " + projectName + " " + configName;
projConfig->general.nmakeReBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) rebuild " + projectName + " " + configName;
projConfig->general.nmakeBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) build --no-deps " + projectName + " " + configName;
projConfig->general.nmakeCleanCommandLine = cppbuildexe + " --workdir $(SolutionDir) clean --no-deps " + projectName + " " + configName;
projConfig->general.nmakeReBuildCommandLine = cppbuildexe + " --workdir $(SolutionDir) rebuild --no-deps " + projectName + " " + configName;
}
else if (projectType == "utility")
{
Expand All @@ -751,7 +751,7 @@ void VSWorkspace::addTargetProject(const BuildTarget& targetDef)
projConfig->link.subSystem = "Windows";
}

projConfig->postBuild.command = cppbuildexe + " --workdir $(SolutionDir) postbuild " + projectName + " " + configName;
projConfig->postBuild.command = cppbuildexe + " --workdir $(SolutionDir) postbuild --no-deps " + projectName + " " + configName;

if (!configDefines.empty())
configDefines.push_back("%(PreprocessorDefinitions)");
Expand Down
Loading