Target Info APIs¶
source_api.h¶
-
template<typename T>
class SourceApi¶ Public Functions
-
inline std::vector<std::string> GetSourceFiles() const¶
-
inline void AddSourceAbsolute(const fs::path &absolute_source)¶
-
inline void GlobSourcesAbsolute(const fs::path &absolute_source_dir)¶
-
inline void AddSource(const fs::path &relative_source, const fs::path &relative_to_target_path = "")¶
-
inline void GlobSources(const fs::path &relative_to_target_path = "")¶
-
inline std::vector<std::string> GetSourceFiles() const¶
include_api.h¶
-
template<typename T>
class IncludeApi¶ Public Functions
-
inline std::vector<std::string> GetHeaderFiles() const¶
-
inline const std::vector<std::string> &GetIncludeDirs() const¶
-
inline void AddHeaderAbsolute(const fs::path &absolute_filepath)¶
-
inline void GlobHeadersAbsolute(const fs::path &absolute_path)¶
-
inline void AddIncludeDirAbsolute(const fs::path &absolute_include_dir, bool glob_headers = false)¶
-
inline void AddHeader(const fs::path &relative_filename, const fs::path &relative_to_target_path = "")¶
-
inline void GlobHeaders(const fs::path &relative_to_target_path = "")¶
-
inline void AddIncludeDir(const fs::path &relative_include_dir, bool glob_headers = false)¶
-
inline std::vector<std::string> GetHeaderFiles() const¶
lib_api.h¶
-
template<typename T>
class LibApi¶ Public Functions
-
inline std::vector<std::string> GetLibDeps() const¶
-
inline const std::vector<std::string> &GetExternalLibDeps() const¶
-
inline const std::vector<std::string> &GetLibDirs() const¶
-
inline void AddLibDirAbsolute(const fs::path &absolute_lib_dir)¶
-
inline void AddLibDir(const fs::path &relative_lib_dir)¶
-
inline void AddLibDep(const std::string &lib_dep)¶
-
inline std::vector<std::string> GetLibDeps() const¶
pch_api.h¶
-
template<typename T>
class PchApi¶
flag_api.h¶
-
template<typename T>
class FlagApi¶ Public Functions
-
inline void AddPreprocessorFlag(const std::string &flag)¶
-
inline void AddCommonCompileFlag(const std::string &flag)¶
-
inline void AddPchCompileFlag(const std::string &flag)¶
-
inline void AddPchObjectFlag(const std::string &flag)¶
-
inline void AddAsmCompileFlag(const std::string &flag)¶
-
inline void AddCCompileFlag(const std::string &flag)¶
-
inline void AddCppCompileFlag(const std::string &flag)¶
-
inline void AddLinkFlag(const std::string &flag)¶
-
inline const std::vector<std::string> &GetPreprocessorFlags() const¶
-
inline const std::vector<std::string> &GetCommonCompileFlags() const¶
-
inline const std::vector<std::string> &GetPchCompileFlags() const¶
-
inline const std::vector<std::string> &GetPchObjectFlags() const¶
-
inline const std::vector<std::string> &GetAsmCompileFlags() const¶
-
inline const std::vector<std::string> &GetCCompileFlags() const¶
-
inline const std::vector<std::string> &GetCppCompileFlags() const¶
-
inline const std::vector<std::string> &GetLinkFlags() const¶
-
inline void AddPreprocessorFlag(const std::string &flag)¶
deps_api.h¶
-
template<typename T>
class DepsApi¶ Public Functions
-
inline std::vector<std::string> GetCompileDependencies() const¶
-
inline std::vector<std::string> GetLinkDependencies() const¶
-
inline void AddCompileDependencyAbsolute(const fs::path &absolute_path)¶
Recompile sources to object if compile dependency is removed, added or newer from the previous build.
-
inline void AddCompileDependency(const fs::path &relative_path)¶
Recompile sources to object if compile dependency is removed, added or newer from the previous build.
-
inline void AddLinkDependencyAbsolute(const fs::path &absolute_path)¶
Relink target if link dependency is removed, added or newer from previous build.
-
inline void AddLinkDependency(const fs::path &relative_path)¶
Relink target if link dependency is removed, added or newer from previous build.
-
inline std::vector<std::string> GetCompileDependencies() const¶
sync_api.h¶
-
template<typename T>
class SyncApi¶ Public Functions
-
void Copy(const T &target, std::initializer_list<SyncOption> options)¶
Copy/Replace selected variables when Target supplied by const reference.
-
void Copy(T &&target, std::initializer_list<SyncOption> options)¶
Copy/Replace selected variables when Target supplied by move.
-
void Copy(const T &target, std::initializer_list<SyncOption> options)¶
TargetInfo¶
target_info.h¶
-
class TargetInfo : public buildcc::internal::SourceApi<TargetInfo>, public buildcc::internal::IncludeApi<TargetInfo>, public buildcc::internal::LibApi<TargetInfo>, public buildcc::internal::PchApi<TargetInfo>, public buildcc::internal::FlagApi<TargetInfo>, public buildcc::internal::DepsApi<TargetInfo>, public buildcc::internal::SyncApi<TargetInfo>, public buildcc::internal::TargetEnvApi<TargetInfo>¶
Subclassed by buildcc::Target
Public Functions
-
inline TargetInfo(const BaseToolchain &toolchain, const TargetEnv &env)¶
Friends
- friend class internal::SourceApi< TargetInfo >
- friend class internal::IncludeApi< TargetInfo >
- friend class internal::LibApi< TargetInfo >
- friend class internal::PchApi< TargetInfo >
- friend class internal::FlagApi< TargetInfo >
- friend class internal::DepsApi< TargetInfo >
- friend class internal::SyncApi< TargetInfo >
- friend class internal::TargetEnvApi< TargetInfo >
-
inline TargetInfo(const BaseToolchain &toolchain, const TargetEnv &env)¶
-
typedef TargetInfo buildcc::BaseTargetInfo¶
Target APIs¶
Important
Target APIs can also use TargetInfo APIs
target_env.h¶
-
template<typename T>
class TargetEnvApi¶ Subclassed by buildcc::TargetInfo
Target¶
target.h¶
-
class Target : public buildcc::internal::BuilderInterface, public buildcc::TargetInfo, public buildcc::internal::TargetGetter<Target>¶
Subclassed by buildcc::DynamicTarget_gcc, buildcc::DynamicTarget_generic, buildcc::DynamicTarget_msvc, buildcc::ExecutableTarget_gcc, buildcc::ExecutableTarget_generic, buildcc::ExecutableTarget_msvc, buildcc::StaticTarget_gcc, buildcc::StaticTarget_generic, buildcc::StaticTarget_msvc, buildcc::Target_generic
Public Functions
-
inline explicit Target(const std::string &name, TargetType type, const Toolchain &toolchain, const TargetEnv &env, const TargetConfig &config = TargetConfig())¶
-
virtual ~Target() = default¶
-
virtual void Build() override¶
Friends
- friend class internal::CompilePch
- friend class internal::CompileObject
- friend class internal::LinkTarget
- friend class internal::TargetGetter< Target >
-
inline explicit Target(const std::string &name, TargetType type, const Toolchain &toolchain, const TargetEnv &env, const TargetConfig &config = TargetConfig())¶
Specialized Target¶
target_custom.h¶
-
typedef BaseTarget buildcc::Target_custom¶
target_gcc.h¶
-
class ExecutableTarget_gcc : public buildcc::Target¶
Subclassed by buildcc::ExecutableTarget_mingw
Public Functions
-
inline ExecutableTarget_gcc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = GccConfig::Executable())¶
-
inline ExecutableTarget_gcc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = GccConfig::Executable())¶
-
class StaticTarget_gcc : public buildcc::Target¶
Public Functions
-
inline StaticTarget_gcc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = GccConfig::StaticLib())¶
-
inline StaticTarget_gcc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = GccConfig::StaticLib())¶
-
class DynamicTarget_gcc : public buildcc::Target¶
Subclassed by buildcc::DynamicTarget_mingw
Public Functions
-
inline DynamicTarget_gcc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = GccConfig::DynamicLib())¶
-
inline DynamicTarget_gcc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = GccConfig::DynamicLib())¶
target_msvc.h¶
-
class ExecutableTarget_msvc : public buildcc::Target¶
Public Functions
-
inline ExecutableTarget_msvc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = MsvcConfig::Executable())¶
-
inline ExecutableTarget_msvc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = MsvcConfig::Executable())¶
-
class StaticTarget_msvc : public buildcc::Target¶
Public Functions
-
inline StaticTarget_msvc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = MsvcConfig::StaticLib())¶
-
inline StaticTarget_msvc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = MsvcConfig::StaticLib())¶
-
class DynamicTarget_msvc : public buildcc::Target¶
Public Functions
-
inline DynamicTarget_msvc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = MsvcConfig::DynamicLib())¶
-
inline const fs::path &GetDllPath()¶
-
inline DynamicTarget_msvc(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const TargetConfig &config = MsvcConfig::DynamicLib())¶
target_generic.h¶
-
class ExecutableTarget_generic : public buildcc::Target¶
Public Functions
-
inline ExecutableTarget_generic(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
-
inline ~ExecutableTarget_generic()¶
-
inline ExecutableTarget_generic(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
-
class StaticTarget_generic : public buildcc::Target¶
Public Functions
-
inline StaticTarget_generic(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
-
inline StaticTarget_generic(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
-
class DynamicTarget_generic : public buildcc::Target¶
Public Functions
-
inline DynamicTarget_generic(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
-
inline DynamicTarget_generic(const std::string &name, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
-
class Target_generic : public buildcc::Target¶
Public Functions
-
inline Target_generic(const std::string &name, TargetType type, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
-
inline Target_generic(const std::string &name, TargetType type, const BaseToolchain &toolchain, const TargetEnv &env, const env::optional<TargetConfig> &config = {})¶
Example¶
1// Generic toolchain GCC
2Toolchain_gcc gcc;
3
4// Target compatible GCC toolchain
5ExecutableTarget_gcc hello_world("name", gcc, "relative_to_global_env_root_dir");
6
7// NOTE: See APIs above, they are self explanatory
8hello_world.AddSource("");
9
10// Setup the tasks
11hello_world.Build();
12
13// Run the task
14tf::Executor executor;
15executor.run(hello_world.GetTaskflow());
16executor.wait_for_all();