- [x] Target states (Build, BuildComplete) - [x] `Build == TRUE` when first build or rebuilt - [x] `Lock == TRUE` after Build is called - [x] Add LOCK/UNLOCK of usage of functions after `Target::Build` - Some APIs can only be used **after build** function is called - Some APIs should **not** be used after build function is called - [x] Check if dependency on Generator is required (revert back to old implementation if required) - [x] Target Config for defaults - [x] Add language detection (.asm, .c, .cpp) flags (has_asm, has_c, has_cpp) for compiler specific commands - [x] Friend classes for private functions - [x] CompilePCH - [x] CompileObject - [x] LinkTarget - [x] Basic `Copy` API instead of custom `CopyTarget` class - [x] Copy by Target move - [x] Copy by Target const ref - [x] Target root and build dir customization - [x] CRTP to add API and Features (https://www.fluentcpp.com/2017/05/16/what-the-crtp-brings-to-code/) - [x] Copy API - [x] Insert API - [x] Source API - [x] Header and Include Dir API - [x] PCH API - [x] Lib Dep and Lib Dir API - [x] Flags API - [x] Rebuild Deps API - [x] Getters and Target Info API - [ ] Append APIs (Similar to Add APIs) - [ ] Target strings - Refactor magic strings to `constexpr const char * const` - [ ] Callbacks for `Build` customizability - [ ] Custom compile and link arguments with user defined variables similar to `Command::AddDefaultArguments`
Build == TRUEwhen first build or rebuiltLock == TRUEafter Build is calledTarget::BuildCopyAPI instead of customCopyTargetclassconstexpr const char * constBuildcustomizabilityCommand::AddDefaultArguments