Skip to content

Commit 2db8d1e

Browse files
committed
Add support for [target].dependencies
Closes #177
1 parent 645737a commit 2db8d1e

3 files changed

Lines changed: 10 additions & 4 deletions

File tree

include/project_parser.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@ struct Target {
105105
ConditionVector precompile_headers;
106106
ConditionVector private_precompile_headers;
107107

108+
ConditionVector dependencies;
109+
108110
std::string condition;
109111
std::string alias;
110112
Condition<tsl::ordered_map<std::string, std::string>> properties;

src/cmake_generator.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1416,7 +1416,7 @@ void generate_cmake(const char *path, const parser::Project *parent_project) {
14161416
});
14171417
};
14181418

1419-
auto link_libraries = [&](const parser::ConditionVector &cargs, const std::string &scope) {
1419+
auto link_cmd = [&](const char *command, const parser::ConditionVector &cargs, const std::string &scope) {
14201420
gen.handle_condition(cargs, [&](const std::string &, const std::vector<std::string> &args) {
14211421
std::vector<std::string> targs;
14221422
for (const std::string &arg : args) {
@@ -1432,7 +1432,7 @@ void generate_cmake(const char *path, const parser::Project *parent_project) {
14321432
targs.push_back(arg);
14331433
}
14341434
}
1435-
cmd("target_link_libraries")(target.name, scope, targs);
1435+
cmd(command)(target.name, scope, targs);
14361436
});
14371437
};
14381438

@@ -1452,14 +1452,16 @@ void generate_cmake(const char *path, const parser::Project *parent_project) {
14521452
target_cmd("target_link_directories", t.link_directories, target_scope);
14531453
target_cmd("target_link_directories", t.private_link_directories, "PRIVATE");
14541454

1455-
link_libraries(t.link_libraries, target_scope);
1456-
link_libraries(t.private_link_libraries, "PRIVATE");
1455+
link_cmd("target_link_libraries", t.link_libraries, target_scope);
1456+
link_cmd("target_link_libraries", t.private_link_libraries, "PRIVATE");
14571457

14581458
target_cmd("target_link_options", t.link_options, target_scope);
14591459
target_cmd("target_link_options", t.private_link_options, "PRIVATE");
14601460

14611461
target_cmd("target_precompile_headers", t.precompile_headers, target_scope);
14621462
target_cmd("target_precompile_headers", t.private_precompile_headers, "PRIVATE");
1463+
1464+
link_cmd("add_dependencies", t.dependencies, "");
14631465
};
14641466

14651467
if (tmplate != nullptr) {

src/project_parser.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -690,6 +690,8 @@ Project::Project(const Project *parent, const std::string &path, bool build) : p
690690
t.optional("precompile-headers", target.precompile_headers);
691691
t.optional("private-precompile-headers", target.private_precompile_headers);
692692

693+
t.optional("dependencies", target.dependencies);
694+
693695
Condition<std::string> msvc_runtime;
694696
t.optional("msvc-runtime", msvc_runtime);
695697
for (const auto &cond_itr : msvc_runtime) {

0 commit comments

Comments
 (0)