VCCModuel / VCCProjectGenerator / VCCProjectGenerator VSCode ExtensionVersioning Common Codebase Project / Versioning Coding Cooperation ProjectCross plaform project to handle Any Interface with C++ dll. Maintain those standard already stable long time ago. No reason to implement twice. Current Stage Objective: Start VCC Project Manager (Multi Project Handling), including Java Interface, Thread, Form, Action, Git. Note: Still in initialize version. This is the last subversion before alpha release. Reviewing function name. Note: Pending to support Callback, Structure. But not first prior. Please go to following session to see how to create VCC Project to generate c++ dll with Java Interface
What's newGenerate Action Unittest ImportantNeet to upgrade all platforms g++ to latest version! Or you may need to keep version 0.3.x What's nextCpp Check Style and Code Review Features
Options
Pre-RequirementMust already install following before execute VCCProjectGenerator and VCCProjectGenerator VSCode Extension. Or can download the template from git directly. C++ (c++23)
Optional if using Java Interface
Work flow for Extension
If dont want to download extra project, please download following git manually and follow instruction listed in Makefile to adjust.
Sample ProgramVCCProjectGenerator is self writting program. Please download from github (https://github.com/s1155003185/VCCProjectGenerator). Then follow the instruction listed in README.md to change. Build C++ projectFollow the instruction listed in Makefile when compile enter following command in terminal: To build debug
To build unittest only
To build release
To clean project
Other command can be refer to Makefile Debug program is built in bin/Debug Release program is built in bin/Release Optional
Execute C++ project in VScode
Compare to AI Code GenerationSuitable for long term project
VCCModule FeatureCore
Common
Module
UI
Generation By Generator
Pending
Known Issue
Versioning Common Codebase Project / Versioning Coding Cooperation Project IntroductionDocument versioning are highly expected but seems no solution at the moment. Also, current existing document processors have straight behavior, such as auto creating style which make characters disappeared, saving whole document for each save, lagging for large document, etc. Unfortunately, seems that those behaviors are not bug. Enhancement cannot be expected. So, Versioning Coding Cooperation Project is introducted to develop a document versioning system. In order to implement versioning document program, document processor and git manager are need to be implemented at the same time. To speed up, a generator is required to manage those projects. So, there are totally 3 programs need to be written at the same times. When starting a new project, it is time consuming to create basic structure. And rewrite codebase is time consuming. In fact, all projects have similar structure and lots of similar functions. Versioning Common Codebase Project is raised to extract common factor to enhance development efficience. Versioning Common Codebase Project MembersVCC Module is a combination of Interface + C++ DLL. Most process are included in C++ DLL to minimize effort for cross-platform. At the moment, only consider to support Java UI (Window, Linux and Android) and Swift UI (Mac OS and iOS). For view object details, please visit corresponding Git response to check ReadMe.md Template
Features
Expected Features
Manager
Expected Features
Features
Expected Features
Versioning Coding Cooperation Project Members
Versioning Coding Cooperation Project / Versioning Common Codebase Project Common Members
Versionin Common Codebase Project GeneratorC++
If using Java Interface
Compile
Procedure for Add or Update
Command - Versionvpg -Version Description: Get Current Version of Generator. Command - Addvpg -Add -interface [-project-prefix ] [-project-name ] [-exe-name ] [-dll-name ] [-workspace-destination ] [-plugins ] [--ExcludeUnitTest] [--ExcludeExternalUnitTest] -project-prefix : CPPDLL, CPPEXE, CPPCOMPLEX, VCCDLL, VCCEXE, VCCCOMPLEX CPPDLL: C++ DLL CPPEXE: C++ EXE CPPCOMPLEX: C++ DLL + EXE VCCDLL: VCC DLL VCCEXE: VCC EXE VCCCOMPLEX: VCC DLL + EXE -project-name Recommand. If not state, need to modify vcc.json and Makefile manually. -exe-name Recommand. Only for EXE and Complex mode. If not state, need to modify vcc.json and Makefile manually. -dll-name Recommand. Only for DLL and Complex mode. If not state, need to modify vcc.json and Makefile manually. -workspace-destination Target workspace. If not state, then current workspace. -plugins Can state multiple times. It is the same as the list in vcc.json. --ExcludeUnitTest Exclude gtest. --ExcludeExternalUnitTest Exclude VCC unitest. If full trust VCC git source, then can skip to speed up. If need to customize, recommand to keep it. Description: Generate project from template. Command - Updatevpg -Update [-workspace-destination ] -workspace-destination Target workspace. If not state, then current workspace. Description: Only for VCC Module. Other properties are overriden by vcc.json. First update template to the version that same as VCCProjectGenerator. Then compare different and update the files in workspace. Details: vcc.json, Update Rule. Command - Generatevpg -Generate [-workspace-destination ] Description: Only for VCC Module. Other properties are overriden by vcc.json. Details: vcc.json, Generate Rule. vcc.jsonFor VCCModule, there is vcc.json. Update Mode and Generate Mode fully depends on vcc.json. Can include this to .gitignore file. Path in the project is recommaneded to be in Camel Case. So, when export to java, it will fit java naming style. Sample
ProperiesGeneralVersion ReadOnly. Current VCCModule Version. VCCProjectGenerator and VCCModel version must be the same. ProjectType VCCModule. Reserve for other project type, such as Java and Swift. ProjectPrefix In generation mode, generator only read file with that prefix and generate class with that prefix. It is used to distinguish different project if having multi dll. E.g. "ProjectPrefix": "VPG" Generator only read file have prefix vpg_* and generate class as VPGObject ProjectName Project name. Update mode will also update Makefile. ProjectNameDll DLL name. If does not compile dll, keep it empty. Update mode will auto update Makefile. Generate mode will update DllFunction.h. ProjectNameExe EXE name. If does not compile exe, keep it empty. Update mode will auto update Makefile. IsGit If true, then generate .gitignore. (Pending to init git) TemplateTemplateGitUrl Template Git source. TemplateWorkspace Template workspace. Update mode will update current resource from the source in Template workspace. By default, value is "${userHome}/Documents/vcc/VCCModule". Generator will auto update ${userHome} to user home path. IsExcludeUnittest If true, then skip update unittest/ IsExcludeVCCUnitTest If true, then skip update unittest/External/VCC/ BehaviorActionHistoryType Value: NoHistory: Cannot use Undo in project. Local: No Global History. User needs to define @@Action { "IsIndependent": true } in some class. Global: Global History. Add ActionManager in appliation.cpp. IsActionResultThrowException If true, throw exception if executing action with errors. If false, return Result class. InputTypeWorkspace In Generation mode, Generator will search files with suffix *_property.hpp to create Class, Property Accessor etc. Detail: Generation Rule. OutputExceptionTypeDirectory, ObjectTypeDirectory Mandatory. The location to export exception_type.hpp, object_type.hpp All are used to export to interface. Cannot delete those files. ApplicationDirectoryHpp, ApplicationDirectoryCpp Optional. Empty for no generation. In Generation mode, application.hpp and application.cpp are generated here. ActionDirectoryHpp, ActionDirectoryCpp Optional. Empty then generate in the same file with Form In Generation Mode, action files are generated here. Action Argument class follows normal class generation rules. To Generate Action Argument Class, Action Class and Form Class in same file, need to put Action Argument Property and Form Property in the same file and set ActionDirectoryHpp and ActionDirectoryCpp be empty. FormDirectoryHpp, FormDirectoryCpp Optional. Empty then follow ObjectDirectoryHpp, ObjectDirectoryCpp. In Generation mode, form files are generated here. ObjectDirectoryHpp, ObjectDirectoryCpp Optional. Empty for no generation. In Generation mode, class files are generated here. PropertyAccessorDirectoryHpp, PropertyAccessorDirectoryCpp Optional. Empty for no generation. In Generation mode, Property Accessor files are generated here. ObjectFactoryDirectoryHpp, ObjectFactoryDirectoryCpp Optional. Empty for no generation. In Generation mode, Object Factory file is generated here. PropertyAccessorFactoryDirectoryHpp, PropertyAccessorFactoryDirectoryCpp Optional. Empty for no generation. In Generation mode, Property Accessor Factory file is generated here. Unittest ActionDirectoryCpp Optional. Empty for no generation. If ActionDirectoryHpp and ActionDirectoryCpp are non-empty, will generate as seperate mode (test.cpp). Otherwise, generate in same files ( |