From ff627fbdfd3c4921c71060898b9b6cb4a7e9a920 Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Wed, 30 Jul 2025 13:42:50 +0300 Subject: [PATCH 1/5] Adding version info --- .github/actions/build-windows/action.yml | 2 +- src/Implementation/CMediaRessourceVectorImpl.cpp | 11 +++++++++++ src/Implementation/CMediaRessourceVectorImpl.h | 2 ++ src/Include/IMediaRessourceVectorInterface.h | 3 +++ src/Prefix/StdAfx.h | 12 ++++++++++++ src/SceneDataExchange.cpp | 12 ++++++++++++ src/SceneDataExchange.h | 5 ++++- 7 files changed, 45 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-windows/action.yml b/.github/actions/build-windows/action.yml index a3f23e8e..d7ee095a 100644 --- a/.github/actions/build-windows/action.yml +++ b/.github/actions/build-windows/action.yml @@ -89,7 +89,7 @@ runs: run: | mkdir build_MD_NO_MZ cd build_MD_NO_MZ - cmake .. -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MD -DXERCES_INCLUDE_PATH="..\xerces-c\build\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c" -DDO_NOT_INCLUDE_MINI_ZIP=TRUE + cmake .. -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MD -DXERCES_INCLUDE_PATH="..\xerces-c\build\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c" -DDO_NOT_INCLUDE_MINI_ZIP=TRUE ren MvrGdtf.vcxproj MvrGdtf_ORG.vcxproj # libMVRGdtf - build Debug diff --git a/src/Implementation/CMediaRessourceVectorImpl.cpp b/src/Implementation/CMediaRessourceVectorImpl.cpp index 1b3ffb8b..0879028d 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.cpp +++ b/src/Implementation/CMediaRessourceVectorImpl.cpp @@ -1582,5 +1582,16 @@ VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetSceneObj VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetDuplicatedUuids(bool& outDuplicated) { outDuplicated = fExchangeObj.GetDuplicatedUuids(); + return kVCOMError_NoError; +} + +VectorworksMVR::VCOMError VectorworksMVR::CMediaRessourceVectorImpl::GetLibVersion( MvrString& outVersion ) +{ + // Get the version from the exchange object + TXString version = fExchangeObj.GetLibVersion(); + + // Set the out value + outVersion = version.GetCharPtr(); + return kVCOMError_NoError; } \ No newline at end of file diff --git a/src/Implementation/CMediaRessourceVectorImpl.h b/src/Implementation/CMediaRessourceVectorImpl.h index b458f1cb..b7043478 100644 --- a/src/Implementation/CMediaRessourceVectorImpl.h +++ b/src/Implementation/CMediaRessourceVectorImpl.h @@ -111,5 +111,7 @@ namespace VectorworksMVR // Check for duplicated uuids virtual VCOMError VCOM_CALLTYPE GetDuplicatedUuids(bool& outDuplicated); + virtual VCOMError VCOM_CALLTYPE GetLibVersion( MvrString& outVersion ); + }; } diff --git a/src/Include/IMediaRessourceVectorInterface.h b/src/Include/IMediaRessourceVectorInterface.h index 1fba084d..5466eafa 100644 --- a/src/Include/IMediaRessourceVectorInterface.h +++ b/src/Include/IMediaRessourceVectorInterface.h @@ -434,6 +434,9 @@ namespace VectorworksMVR //---------------------------------------------------------------------------------------- // methods to write a file public: + + virtual VCOMError VCOM_CALLTYPE GetLibVersion( MvrString& outVersion ) = 0; + // Call this at the start of generating a MVR file virtual VCOMError VCOM_CALLTYPE OpenForWrite(MvrString fullPath) = 0; virtual VCOMError VCOM_CALLTYPE AddGdtfFolderLocation(MvrString fullPathToFolder) = 0; diff --git a/src/Prefix/StdAfx.h b/src/Prefix/StdAfx.h index 2744c915..9ef4b5cb 100644 --- a/src/Prefix/StdAfx.h +++ b/src/Prefix/StdAfx.h @@ -17,6 +17,18 @@ #pragma warning( disable : 4800) #endif // _WINDOWS +#ifndef LIB_VERSION_MAJOR +#define LIB_VERSION_MAJOR 1 +#endif + +#ifndef LIB_VERSION_MINOR +#define LIB_VERSION_MINOR 0 +#endif + +#ifndef LIB_VERSION_PATCH +#define LIB_VERSION_PATCH 0 +#endif + #include "GSTypes.h" #include "CommonPrefix.h" #include "Include/VectorworksMVR.h" diff --git a/src/SceneDataExchange.cpp b/src/SceneDataExchange.cpp index 9c59bc9a..51f446aa 100644 --- a/src/SceneDataExchange.cpp +++ b/src/SceneDataExchange.cpp @@ -4131,4 +4131,16 @@ bool SceneDataExchange::GetDuplicatedUuids() const return fDuplicatedUuids; } +MvrString SceneDataExchange::GetLibVersion() const +{ + size_t majorVersion = LIB_VERSION_MAJOR; + size_t minorVersion = LIB_VERSION_MINOR; + size_t patchVersion = LIB_VERSION_PATCH; + + TXString version = TXString(std::to_string(majorVersion).c_str()) + "." + TXString(std::to_string(minorVersion).c_str()) + "." + TXString(std::to_string(patchVersion).c_str()); + + MvrString libVersion = version.GetCharPtr(); + + return libVersion; +} diff --git a/src/SceneDataExchange.h b/src/SceneDataExchange.h index 5278ea93..d1f25658 100644 --- a/src/SceneDataExchange.h +++ b/src/SceneDataExchange.h @@ -1110,7 +1110,10 @@ namespace SceneData void ReadChildObjs(const IXMLFileNodePtr & node, SceneDataGroupObjPtr addToContainer); SceneDataGroupObjPtr ProcessGroup(const IXMLFileNodePtr& node, SceneDataGroupObjPtr addToContainer); - + // --------------------------------------------------------------------------------------------------------------------- + // Lib Version + public: + MvrString GetLibVersion() const; }; From 3e8b4c732eb1157c5fef4992e19f8354871a82b6 Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Wed, 30 Jul 2025 13:49:49 +0300 Subject: [PATCH 2/5] Updating github action to build with Version --- .github/actions/build-ubuntu/action.yml | 2 +- .github/actions/build-windows/action.yml | 6 +++--- CMakeLists.txt | 17 +++++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/.github/actions/build-ubuntu/action.yml b/.github/actions/build-ubuntu/action.yml index 183da6d5..a8ad5c21 100644 --- a/.github/actions/build-ubuntu/action.yml +++ b/.github/actions/build-ubuntu/action.yml @@ -42,7 +42,7 @@ runs: run: | mkdir build cd build - cmake .. -DUNITTEST=TRUE -DEXTRA_LIBS="curl;icuuc;icudata;icui18n;icuio" -DXERCES_LIB_PATH="$(pwd)/../../xerces-c/_build/lib/libxerces-c.a" + cmake .. -DLIB_VERSION_MAJOR=1 -DLIB_VERSION_MINOR=2 -DLIB_VERSION_PATCH=3 -DUNITTEST=TRUE -DEXTRA_LIBS="curl;icuuc;icudata;icui18n;icuio" -DXERCES_LIB_PATH="$(pwd)/../../xerces-c/_build/lib/libxerces-c.a" make -j - name: Prepare package diff --git a/.github/actions/build-windows/action.yml b/.github/actions/build-windows/action.yml index d7ee095a..ee3e4dee 100644 --- a/.github/actions/build-windows/action.yml +++ b/.github/actions/build-windows/action.yml @@ -89,7 +89,7 @@ runs: run: | mkdir build_MD_NO_MZ cd build_MD_NO_MZ - cmake .. -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MD -DXERCES_INCLUDE_PATH="..\xerces-c\build\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c" -DDO_NOT_INCLUDE_MINI_ZIP=TRUE + cmake .. -DLIB_VERSION_MAJOR=1 -DLIB_VERSION_MINOR=2 -DLIB_VERSION_PATCH=3 -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MD -DXERCES_INCLUDE_PATH="..\xerces-c\build\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c" -DDO_NOT_INCLUDE_MINI_ZIP=TRUE ren MvrGdtf.vcxproj MvrGdtf_ORG.vcxproj # libMVRGdtf - build Debug @@ -139,7 +139,7 @@ runs: run: | mkdir build_MD cd build_MD - cmake .. -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MD -DXERCES_INCLUDE_PATH="..\xerces-c\build\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c\build" + cmake .. -DLIB_VERSION_MAJOR=1 -DLIB_VERSION_MINOR=2 -DLIB_VERSION_PATCH=3 -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MD -DXERCES_INCLUDE_PATH="..\xerces-c\build\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c\build" ren MvrGdtf.vcxproj MvrGdtf_ORG.vcxproj # libMVRGdtf - build Debug @@ -189,7 +189,7 @@ runs: run: | mkdir build_MT cd build_MT - cmake .. -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MT -DXERCES_INCLUDE_PATH="..\xerces-c\build_mt\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build_mt\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c\build_mt" + cmake .. -DLIB_VERSION_MAJOR=1 -DLIB_VERSION_MINOR=2 -DLIB_VERSION_PATCH=3 -DCMAKE_INSTALL_PREFIX:PATH=libs -T v142,version=14.29 -DWIN_RUNTIME_LIB=-MT -DXERCES_INCLUDE_PATH="..\xerces-c\build_mt\libs\include;..\xerces\src" -DXERCES_LIB_PATH="..\xerces\build_mt\libs\lib" -DXERCES_ROOT_PATH="..\xerces-c\build_mt" ren MvrGdtf.vcxproj MvrGdtf_ORG.vcxproj # libMVRGdtf - build Debug diff --git a/CMakeLists.txt b/CMakeLists.txt index 693dc1b7..7d5c3da2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,6 +30,7 @@ if(${BUILD_MVR_XCHANGE_EXAMPLE} AND ${DO_NOT_INCLUDE_MINI_ZIP} AND NOT ${BUILD_M message( FATAL_ERROR "MVRXChange example must be linked against Mini Zip and boost" ) endif() + set(CMAKE_POSITION_INDEPENDENT_CODE ON) ################################################# @@ -61,6 +62,17 @@ project(MvrGdtf) set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED True) +# Require version variables to be set by the user +if(NOT DEFINED LIB_VERSION_MAJOR) + message(FATAL_ERROR "You must define LIB_VERSION_MAJOR when building the library.") +endif() +if(NOT DEFINED LIB_VERSION_MINOR) + message(FATAL_ERROR "You must define LIB_VERSION_MINOR when building the library.") +endif() +if(NOT DEFINED LIB_VERSION_PATCH) + message(FATAL_ERROR "You must define LIB_VERSION_PATCH when building the library.") +endif() + # Set output dir @@ -168,6 +180,11 @@ endif(WIN32) # Add the preprocessors # Link extra libs target_compile_definitions(MvrGdtf ${PREPROCESSORS}) +target_compile_definitions(MvrGdtf PRIVATE + LIB_VERSION_MAJOR=${LIB_VERSION_MAJOR} + LIB_VERSION_MINOR=${LIB_VERSION_MINOR} + LIB_VERSION_PATCH=${LIB_VERSION_PATCH} +) target_link_libraries(MvrGdtf ${EXTRA_LIBS}) if(${UNITTEST}) From 41d5da35ca6444f9882cadab1087a2cf52bd4867 Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Wed, 30 Jul 2025 15:49:24 +0300 Subject: [PATCH 3/5] Optimizing the CMake --- CMakeLists.txt | 1 + src/Prefix/StdAfx.h | 8 +++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d5c3da2..3985dbec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -185,6 +185,7 @@ target_compile_definitions(MvrGdtf PRIVATE LIB_VERSION_MINOR=${LIB_VERSION_MINOR} LIB_VERSION_PATCH=${LIB_VERSION_PATCH} ) + target_link_libraries(MvrGdtf ${EXTRA_LIBS}) if(${UNITTEST}) diff --git a/src/Prefix/StdAfx.h b/src/Prefix/StdAfx.h index 9ef4b5cb..f2ff592b 100644 --- a/src/Prefix/StdAfx.h +++ b/src/Prefix/StdAfx.h @@ -18,15 +18,13 @@ #endif // _WINDOWS #ifndef LIB_VERSION_MAJOR -#define LIB_VERSION_MAJOR 1 +#error "LIB_VERSION_MAJOR must be defined by the build system" #endif - #ifndef LIB_VERSION_MINOR -#define LIB_VERSION_MINOR 0 +#error "LIB_VERSION_MINOR must be defined by the build system" #endif - #ifndef LIB_VERSION_PATCH -#define LIB_VERSION_PATCH 0 +#error "LIB_VERSION_PATCH must be defined by the build system" #endif #include "GSTypes.h" From 71d3ef927b58c3f2b55e5e178d99f17ea9b0651a Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Wed, 30 Jul 2025 15:56:29 +0300 Subject: [PATCH 4/5] Adding it to unittest project --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3985dbec..bf03e78b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -190,6 +190,11 @@ target_link_libraries(MvrGdtf ${EXTRA_LIBS}) if(${UNITTEST}) target_compile_definitions(MvrGdtfUnitTest ${PREPROCESSORS}) +target_compile_definitions(MvrGdtfUnitTest PRIVATE + LIB_VERSION_MAJOR=${LIB_VERSION_MAJOR} + LIB_VERSION_MINOR=${LIB_VERSION_MINOR} + LIB_VERSION_PATCH=${LIB_VERSION_PATCH} +) target_link_libraries(MvrGdtfUnitTest ${EXTRA_LIBS}) #Append Runtime From bea56cb4152ae41ab8da13cda4dde0d259afafcc Mon Sep 17 00:00:00 2001 From: Alesandro Dragnev Date: Wed, 30 Jul 2025 16:43:14 +0300 Subject: [PATCH 5/5] Adding the macos action --- .github/actions/build-macos/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/build-macos/action.yml b/.github/actions/build-macos/action.yml index cda7ec13..8277a947 100644 --- a/.github/actions/build-macos/action.yml +++ b/.github/actions/build-macos/action.yml @@ -46,7 +46,7 @@ runs: run: | mkdir build_mac_x64_no_mz cd build_mac_x64_no_mz - cmake .. -DCMAKE_C_FLAGS="-arch x86_64" -DCMAKE_CXX_FLAGS="-arch x86_64" -DDO_NOT_INCLUDE_MINI_ZIP=true -DCMAKE_INSTALL_PREFIX:PATH=libs -DXERCES_INCLUDE_PATH="../xerces-c/_build_mac_x64/include;../xerces/src" -DXERCES_LIB_PATH="../xerces/_build_mac_x64/lib" -DXERCES_ROOT_PATH="../xerces-c/_build_mac_x64" + cmake .. -DLIB_VERSION_MAJOR=1 -DLIB_VERSION_MINOR=2 -DLIB_VERSION_PATCH=3 -DCMAKE_C_FLAGS="-arch x86_64" -DCMAKE_CXX_FLAGS="-arch x86_64" -DDO_NOT_INCLUDE_MINI_ZIP=true -DCMAKE_INSTALL_PREFIX:PATH=libs -DXERCES_INCLUDE_PATH="../xerces-c/_build_mac_x64/include;../xerces/src" -DXERCES_LIB_PATH="../xerces/_build_mac_x64/lib" -DXERCES_ROOT_PATH="../xerces-c/_build_mac_x64" make -j make install echo Combine into single lib file... @@ -65,7 +65,7 @@ runs: run: | mkdir build_mac_x64 cd build_mac_x64 - cmake .. -DCMAKE_C_FLAGS="-arch x86_64" -DCMAKE_CXX_FLAGS="-arch x86_64" -DCMAKE_INSTALL_PREFIX:PATH=libs -DXERCES_INCLUDE_PATH="../xerces-c/_build_mac_x64/include;../xerces/src" -DXERCES_LIB_PATH="../xerces/_build_mac_x64/lib" -DXERCES_ROOT_PATH="../xerces-c/_build_mac_x64" + cmake .. -DLIB_VERSION_MAJOR=1 -DLIB_VERSION_MINOR=2 -DLIB_VERSION_PATCH=3 -DCMAKE_C_FLAGS="-arch x86_64" -DCMAKE_CXX_FLAGS="-arch x86_64" -DCMAKE_INSTALL_PREFIX:PATH=libs -DXERCES_INCLUDE_PATH="../xerces-c/_build_mac_x64/include;../xerces/src" -DXERCES_LIB_PATH="../xerces/_build_mac_x64/lib" -DXERCES_ROOT_PATH="../xerces-c/_build_mac_x64" make -j make install echo Combine into single lib file...