@@ -15,6 +15,7 @@ constexpr std::string_view EXE = "build";
1515
1616// Function Prototypes
1717static void clean_cb ();
18+ static void args_lib_type_cb (CLI::App &app, TargetType &lib_type);
1819static void foolib_build_cb (BaseTarget &foolib_target);
1920static void generic_build_cb (BaseTarget &generic_target,
2021 BaseTarget &foolib_target);
@@ -23,26 +24,11 @@ int main(int argc, char **argv) {
2324// 1. Get arguments
2425 ArgToolchain custom_toolchain;
2526 TargetType default_lib_type{TargetType::StaticLibrary};
26- auto &instance =Args::Init ();
27-
28- try {
29- const std::map<std::string, TargetType> lib_type_map_{
30- {" StaticLib" , TargetType::StaticLibrary},
31- {" DynamicLib" , TargetType::DynamicLibrary},
32- };
33-
34- Args::Ref ()
35- .add_option (" --default_lib_type" , default_lib_type," Default Lib Type" )
36- ->transform (CLI::CheckedTransformer (lib_type_map_, CLI::ignore_case))
37- ->group (" Custom" );
38-
39- // NOTE, You can add more custom toolchains as per your requirement
40- instance.AddToolchain (" user" ," User defined toolchain" , custom_toolchain);
41- }catch (const std::exception &e) {
42- std::cout <<" EXCEPTION" << e.what () << std::endl;
43- }
44-
45- instance.Parse (argc, argv);
27+ Args::Init ()
28+ .AddToolchain (" user" ," User defined toolchain" , custom_toolchain)
29+ .AddCustomCallback (
30+ [&](CLI::App &app) {args_lib_type_cb (app, default_lib_type); })
31+ .Parse (argc, argv);
4632
4733// 2. Initialize your environment
4834 Register reg;
@@ -119,6 +105,17 @@ static void clean_cb() {
119105fs::remove_all (Project::GetBuildDir ());
120106}
121107
108+ void args_lib_type_cb (CLI::App &app, TargetType &lib_type) {
109+ const std::map<std::string, TargetType> lib_type_map_{
110+ {" StaticLib" , TargetType::StaticLibrary},
111+ {" DynamicLib" , TargetType::DynamicLibrary},
112+ };
113+
114+ app.add_option (" --default_lib_type" , lib_type," Default Lib Type" )
115+ ->transform (CLI::CheckedTransformer (lib_type_map_, CLI::ignore_case))
116+ ->group (" Custom" );
117+ }
118+
122119static void foolib_build_cb (BaseTarget &foolib_target) {
123120fooTarget (foolib_target,Project::GetRootDir () /" .." /" foolib" );
124121 foolib_target.Build ();