1
0

chore: update build script

- change project layout for better understanding.
- update build script for more close to standard cmake way.
This commit is contained in:
2026-01-24 17:13:54 +08:00
parent af6a50c2f9
commit f9ab66dfc2
78 changed files with 290 additions and 283 deletions

View File

@@ -1,7 +1,7 @@
# Configure version file
configure_file(
${CMAKE_CURRENT_LIST_DIR}/../CMake/VTVersion.hpp.in
${CMAKE_CURRENT_LIST_DIR}/VTVersion.hpp
${CMAKE_CURRENT_LIST_DIR}/LibCmo/VTVersion.hpp.in
${CMAKE_CURRENT_LIST_DIR}/LibCmo/VTVersion.hpp
@ONLY
)
@@ -10,93 +10,93 @@ add_library(LibCmo STATIC "")
# Setup static library sources
target_sources(LibCmo
PRIVATE
# Assistant source files
VTEncoding.cpp
VTImage.cpp
# NeMo Shared
LibCmo/VTEncoding.cpp
LibCmo/VTImage.cpp
# CK2
CK2/CKBitmapData.cpp
CK2/CKContext.cpp
CK2/CKFileOthers.cpp
CK2/CKFileReader.cpp
CK2/CKFileWriter.cpp
CK2/CKGlobals.cpp
CK2/CKStateChunkOthers.cpp
CK2/CKStateChunkReader.cpp
CK2/CKStateChunkWriter.cpp
LibCmo/CK2/CKBitmapData.cpp
LibCmo/CK2/CKContext.cpp
LibCmo/CK2/CKFileOthers.cpp
LibCmo/CK2/CKFileReader.cpp
LibCmo/CK2/CKFileWriter.cpp
LibCmo/CK2/CKGlobals.cpp
LibCmo/CK2/CKStateChunkOthers.cpp
LibCmo/CK2/CKStateChunkReader.cpp
LibCmo/CK2/CKStateChunkWriter.cpp
# CK2 Data Handler
CK2/DataHandlers/CKBitmapHandler.cpp
LibCmo/CK2/DataHandlers/CKBitmapHandler.cpp
# CK2 Manager
CK2/MgrImpls/CKBaseManager.cpp
CK2/MgrImpls/CKObjectManager.cpp
CK2/MgrImpls/CKPathManager.cpp
LibCmo/CK2/MgrImpls/CKBaseManager.cpp
LibCmo/CK2/MgrImpls/CKObjectManager.cpp
LibCmo/CK2/MgrImpls/CKPathManager.cpp
# CK2 Object
CK2/ObjImpls/CK3dEntity.cpp
CK2/ObjImpls/CKBeObject.cpp
CK2/ObjImpls/CKGroup.cpp
CK2/ObjImpls/CKMaterial.cpp
CK2/ObjImpls/CKMesh.cpp
CK2/ObjImpls/CKObject.cpp
CK2/ObjImpls/CKTexture.cpp
CK2/ObjImpls/CKLight.cpp
CK2/ObjImpls/CKTargetLight.cpp
CK2/ObjImpls/CKCamera.cpp
CK2/ObjImpls/CKTargetCamera.cpp
LibCmo/CK2/ObjImpls/CK3dEntity.cpp
LibCmo/CK2/ObjImpls/CKBeObject.cpp
LibCmo/CK2/ObjImpls/CKGroup.cpp
LibCmo/CK2/ObjImpls/CKMaterial.cpp
LibCmo/CK2/ObjImpls/CKMesh.cpp
LibCmo/CK2/ObjImpls/CKObject.cpp
LibCmo/CK2/ObjImpls/CKTexture.cpp
LibCmo/CK2/ObjImpls/CKLight.cpp
LibCmo/CK2/ObjImpls/CKTargetLight.cpp
LibCmo/CK2/ObjImpls/CKCamera.cpp
LibCmo/CK2/ObjImpls/CKTargetCamera.cpp
# VxMath
VxMath/VxMemoryMappedFile.cpp
VxMath/VxTypes.cpp
VxMath/VxMath.cpp
LibCmo/VxMath/VxMemoryMappedFile.cpp
LibCmo/VxMath/VxTypes.cpp
LibCmo/VxMath/VxMath.cpp
# X Container
XContainer/XTypes.cpp
LibCmo/XContainer/XTypes.cpp
)
# Setup static library headers
target_sources(LibCmo
PUBLIC
FILE_SET HEADERS
FILES
# Asststant header files
VTVersion.hpp
VTInternal.hpp
VTEncoding.hpp
VTUtils.hpp
# NeMo Shared
VTAll.hpp
LibCmo/VTVersion.hpp
LibCmo/VTInternal.hpp
LibCmo/VTEncoding.hpp
LibCmo/VTUtils.hpp
# CK2
CK2/CKDefines.hpp
CK2/CKEnums.hpp
CK2/CKGlobals.hpp
CK2/CKIdentifiers.hpp
CK2/CKTypes.hpp
CK2/CKBitmapData.hpp
CK2/CKContext.hpp
CK2/CKFile.hpp
CK2/CKStateChunk.hpp
LibCmo/CK2/CKDefines.hpp
LibCmo/CK2/CKEnums.hpp
LibCmo/CK2/CKGlobals.hpp
LibCmo/CK2/CKIdentifiers.hpp
LibCmo/CK2/CKTypes.hpp
LibCmo/CK2/CKBitmapData.hpp
LibCmo/CK2/CKContext.hpp
LibCmo/CK2/CKFile.hpp
LibCmo/CK2/CKStateChunk.hpp
# CK2 Data Handler
CK2/DataHandlers/CKBitmapHandler.hpp
LibCmo/CK2/DataHandlers/CKBitmapHandler.hpp
# CK2 Manager
CK2/MgrImpls/CKBaseManager.hpp
CK2/MgrImpls/CKObjectManager.hpp
CK2/MgrImpls/CKPathManager.hpp
LibCmo/CK2/MgrImpls/CKBaseManager.hpp
LibCmo/CK2/MgrImpls/CKObjectManager.hpp
LibCmo/CK2/MgrImpls/CKPathManager.hpp
# CK2 Object
CK2/ObjImpls/CK3dEntity.hpp
CK2/ObjImpls/CKBeObject.hpp
CK2/ObjImpls/CKGroup.hpp
CK2/ObjImpls/CKMaterial.hpp
CK2/ObjImpls/CKMesh.hpp
CK2/ObjImpls/CKObject.hpp
CK2/ObjImpls/CKTexture.hpp
CK2/ObjImpls/CK3dObject.hpp
CK2/ObjImpls/CKRenderObject.hpp
CK2/ObjImpls/CKSceneObject.hpp
CK2/ObjImpls/CKLight.hpp
CK2/ObjImpls/CKTargetLight.hpp
CK2/ObjImpls/CKCamera.hpp
CK2/ObjImpls/CKTargetCamera.hpp
LibCmo/CK2/ObjImpls/CK3dEntity.hpp
LibCmo/CK2/ObjImpls/CKBeObject.hpp
LibCmo/CK2/ObjImpls/CKGroup.hpp
LibCmo/CK2/ObjImpls/CKMaterial.hpp
LibCmo/CK2/ObjImpls/CKMesh.hpp
LibCmo/CK2/ObjImpls/CKObject.hpp
LibCmo/CK2/ObjImpls/CKTexture.hpp
LibCmo/CK2/ObjImpls/CK3dObject.hpp
LibCmo/CK2/ObjImpls/CKRenderObject.hpp
LibCmo/CK2/ObjImpls/CKSceneObject.hpp
LibCmo/CK2/ObjImpls/CKLight.hpp
LibCmo/CK2/ObjImpls/CKTargetLight.hpp
LibCmo/CK2/ObjImpls/CKCamera.hpp
LibCmo/CK2/ObjImpls/CKTargetCamera.hpp
# VxMath
VxMath/VxTypes.hpp
VxMath/VxMath.hpp
VxMath/VxEnums.hpp
VxMath/VxMemoryMappedFile.hpp
LibCmo/VxMath/VxTypes.hpp
LibCmo/VxMath/VxMath.hpp
LibCmo/VxMath/VxEnums.hpp
LibCmo/VxMath/VxMemoryMappedFile.hpp
# X Container
XContainer/XTypes.hpp
LibCmo/XContainer/XTypes.hpp
)
# Setup include and linked library infomation
target_include_directories(LibCmo
@@ -109,32 +109,13 @@ PUBLIC
YYCC::YYCCommonplace
PRIVATE
ZLIB::ZLIB
stb::stb-image
)
if (NOT WIN32)
target_link_libraries(LibCmo PRIVATE Iconv::Iconv)
endif ()
# Setup C++ standard
set_target_properties(LibCmo
PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED 20
CXX_EXTENSION OFF
STB::STB
)
target_compile_definitions(LibCmo
# Expose LibCmo build type
PUBLIC
"$<$<CONFIG:Debug>:LIBCMO_BUILD_DEBUG>"
"$<$<CONFIG:Release,RelWithDebInfo,MinSize>:LIBCMO_BUILD_RELEASE>"
# Unicode charset for private using
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:UNICODE>
$<$<CXX_COMPILER_ID:MSVC>:_UNICODE>
)
target_compile_options(LibCmo
# Order build as UTF-8 in MSVC
PRIVATE
$<$<CXX_COMPILER_ID:MSVC>:/utf-8>
)
# Install binary and headers