#pragma once #include #include #include #include #include namespace cmkr { namespace cmake { struct Setting { std::string name; std::string comment; mpark::variant val; bool cache = false; bool force = false; }; struct Option { std::string name; std::string comment; bool val; }; struct Package { std::string name; std::string version; bool required = true; std::vector components; }; struct Target { std::string name; std::string type; std::vector sources; std::vector include_directories; std::vector compile_features; std::vector compile_definitions; std::vector link_libraries; std::string alias; std::map properties; }; struct Test { std::string name; std::string cmd; std::vector args; }; struct Install { std::vector targets; std::vector files; std::vector dirs; std::vector configs; std::string destination; }; struct CMake { std::string cmake_version; std::string build_dir = "build"; std::string generator; std::string config; std::vector subdirs; std::vector cppflags; std::vector cflags; std::vector linkflags; std::vector gen_args; std::vector build_args; std::string proj_name; std::string proj_version; std::vector settings; std::vector