refactor: update project

- add documentation CMake build script. re-organise document layout for future changes.
- move LIBCMO_EXPORT to BMap and rename it to BMAP_EXPORT because only BMap need to use this macro.
- fully refactor VTEncoding to make it more like Python
	- Now language name is platform independent.
	- Hide implementation detail as possible as I can.
	- Language mapping are still work in progress.
- add code gen for new added universal encoding feature to generate language name mapping in Windows and Iconv respectively.
- remove old code of CMake build script.
- update VTUtils for new requirement.
	- remove useless functions.
	- create LibCmo specific custom exception classes.
This commit is contained in:
2024-08-16 22:07:23 +08:00
parent afa06339b2
commit f870d4dde3
20 changed files with 1013 additions and 726 deletions

View File

@ -34,8 +34,12 @@ PROPERTIES
CXX_STANDARD_REQUIRED 20
CXX_EXTENSION OFF
)
# Order Unicode charset for private using
# Setup project macros
target_compile_definitions(BMap
# Enable export macro
PRIVATE
BMAP_EXPORTING
# Order Unicode charset for private using
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:UNICODE>
$<$<CXX_COMPILER_ID:MSVC>:_UNICODE>
@ -51,69 +55,3 @@ install(TARGETS BMap
CONFIGURATIONS Release
RUNTIME DESTINATION ${YYCC_INSTALL_BIN_PATH}
)
# cmake_minimum_required(VERSION 3.12)
# project(BMap LANGUAGES CXX)
# # add libcmo if not existed
# if (NOT TARGET LibCmo)
# add_subdirectory("../LibCmo" "LibCmo.out")
# endif ()
# # add ironpad if not existed
# if (NOT TARGET IronPad)
# add_subdirectory("../IronPad" "IronPad.out")
# endif ()
# # hide all function in default
# # fix imported library PIC issue (i don't know why. just make it works)
# set_target_properties(LibCmo
# PROPERTIES
# CXX_VISIBILITY_PRESET hidden
# POSITION_INDEPENDENT_CODE ON
# )
# set_target_properties(IronPad
# PROPERTIES
# CXX_VISIBILITY_PRESET hidden
# POSITION_INDEPENDENT_CODE ON
# )
# # setup sources
# set(bmap_headers ".")
# set(bmap_sources
# BMap.cpp
# BMExports.cpp
# )
# # generate shared library
# add_library(BMap
# SHARED
# ${bmap_sources}
# )
# target_link_libraries(BMap
# PRIVATE
# LibCmo
# IronPad
# )
# target_include_directories(BMap
# PRIVATE
# ${bmap_headers}
# )
# # set project standard
# set_target_properties(BMap
# PROPERTIES
# CXX_STANDARD 20
# CXX_STANDARD_REQUIRED 20
# CXX_EXTENSION OFF
# )
# # set default visibility to hidden
# set_target_properties(BMap
# PROPERTIES
# CXX_VISIBILITY_PRESET hidden
# )
# # add export used macro flag
# target_compile_definitions(BMap
# PUBLIC
# LIBCMO_EXPORTING
# )