From 03f4b1b7735d85981126c8ce201edba34f69ed7a Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Wed, 24 Jul 2024 22:28:44 +0800 Subject: [PATCH] chore: finish basic CMake build scripts --- cmake/custom_import_sqlite.cmake | 4 ++-- cmake/init_materializer_env.cmake | 14 ++++++++++---- decorator/CMakeLists.txt | 12 +++++++++++- materializer/CMakeLists.txt | 25 +++++++++++++++++++------ script/build.bat | 10 ++++++++++ shared/CMakeLists.txt | 1 + shared/DataTypes.cpp | 0 7 files changed, 53 insertions(+), 13 deletions(-) create mode 100644 script/build.bat create mode 100644 shared/DataTypes.cpp diff --git a/cmake/custom_import_sqlite.cmake b/cmake/custom_import_sqlite.cmake index 883614c..ed2e81d 100644 --- a/cmake/custom_import_sqlite.cmake +++ b/cmake/custom_import_sqlite.cmake @@ -12,12 +12,12 @@ if (WIN32) add_library(SQLite3 INTERFACE IMPORTED) add_library(SQLite3::SQLite3 ALIAS SQLite3) # Setup header files - set_target_properties(VirtoolsSDK PROPERTIES + set_target_properties(SQLite3 PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SQLITE_AMALGAMATION_PATH}" ) # Setup lib files - set_target_properties(VirtoolsSDK PROPERTIES + set_target_properties(SQLite3 PROPERTIES INTERFACE_LINK_LIBRARIES "${SQLITE_DLL_PATH}/sqlite3.lib" ) diff --git a/cmake/init_materializer_env.cmake b/cmake/init_materializer_env.cmake index 2457a8b..de4b685 100644 --- a/cmake/init_materializer_env.cmake +++ b/cmake/init_materializer_env.cmake @@ -105,12 +105,18 @@ INTERFACE_LINK_LIBRARIES "$<$:${VIRTOOLS_LIB_PATH}/InterfaceControls.lib>" "$<$:${VIRTOOLS_LIB_PATH}/CKControls.lib>" ) -# Setup build macros -set_target_properties(VirtoolsSDK PROPERTIES -INTERFACE_COMPILE_DEFINITIONS +# Setup compile macros +target_compile_definitions(VirtoolsSDK +INTERFACE # Virtools version macro "VIRTOOLS_${VIRTOOLS_VERSION}" # Virtools 5.0 standalone mode need an extra macro - "$<$,$>:VIRTOOLS_USER_SDK" + "$<$,$>:VIRTOOLS_USER_SDK>" +) +# Setup compiler options +target_compile_options(VirtoolsSDK +INTERFACE + # Permissive mode ordered. + "/permissive" ) diff --git a/decorator/CMakeLists.txt b/decorator/CMakeLists.txt index 09816dd..f901200 100644 --- a/decorator/CMakeLists.txt +++ b/decorator/CMakeLists.txt @@ -8,7 +8,7 @@ PRIVATE ) # Setup header files target_sources(VSWDecorator -PUBLIC +PRIVATE FILE_SET HEADERS FILES # Headers @@ -17,6 +17,16 @@ FILES target_include_directories(VSWDecorator PUBLIC ${CMAKE_CURRENT_LIST_DIR} + YYCCommonplace + SQLite3::SQLite3 + VSWShared +) +# Setup linked library +target_link_libraries(VSWDecorator +PRIVATE + YYCCommonplace + SQLite3::SQLite3 + VSWShared ) # Setup C++ standard set_target_properties(VSWDecorator diff --git a/materializer/CMakeLists.txt b/materializer/CMakeLists.txt index 0db45e4..b341a4f 100644 --- a/materializer/CMakeLists.txt +++ b/materializer/CMakeLists.txt @@ -7,24 +7,37 @@ if (VSW_MATERIALIZER_BUILD_TYPE STREQUAL "plugin") else () add_executable(VSWMaterializer "") endif () -# Setup static library sources +# Setup source files target_sources(VSWMaterializer PRIVATE # Sources main.cpp ) +# Setup header files target_sources(VSWMaterializer -PUBLIC +PRIVATE FILE_SET HEADERS FILES # Headers stdafx.hpp - resources.h + resource.h ) # Setup header infomations target_include_directories(VSWMaterializer -PUBLIC +PRIVATE ${CMAKE_CURRENT_LIST_DIR} + YYCCommonplace + SQLite3::SQLite3 + VirtoolsSDK + VSWShared +) +# Setup linked library +target_link_libraries(VSWMaterializer +PRIVATE + YYCCommonplace + SQLite3::SQLite3 + VirtoolsSDK + VSWShared ) # Setup C++ standard (we require C++ 17 because Virtools can hold more higher C++ standard) set_target_properties(VSWMaterializer @@ -36,8 +49,8 @@ PROPERTIES # MSVC specific correction target_compile_definitions(VSWMaterializer PRIVATE - $<$:UNICODE> - $<$:_UNICODE> + $<$:MBCS> + $<$:_MBCS> ) target_compile_options(VSWMaterializer PRIVATE diff --git a/script/build.bat b/script/build.bat new file mode 100644 index 0000000..335e914 --- /dev/null +++ b/script/build.bat @@ -0,0 +1,10 @@ +MKDIR bin +CD bin + +cmake -G "Visual Studio 16 2019" -A Win32 -DVSW_BUILD_MATERIALIZER=ON -DVSW_BUILD_DECORATOR=OFF -DMATERIALIZER_BUILD_TYPE=plugin -DVIRTOOLS_VERSION=50 -DVIRTOOLS_PATH="E:\Virtools\Virtools Dev 5.0" -DSQLITE_AMALGAMATION_PATH="D:\CppLib\SQLite\sqlite-amalgamation-3450300" -DSQLITE_DLL_PATH="D:\CppLib\SQLite\sqlite-dll-win-x86-3450300" -DYYCC_PATH="J:\YYCCommonplace\bin\install\Win32_Debug" ../.. +cmake --build . --config Debug +cmake -G "Visual Studio 16 2019" -A Win32 -DVSW_BUILD_MATERIALIZER=OFF -DVSW_BUILD_DECORATOR=ON -DSQLITE_AMALGAMATION_PATH="D:\CppLib\SQLite\sqlite-amalgamation-3450300" -DSQLITE_DLL_PATH="D:\CppLib\SQLite\sqlite-dll-win-x86-3450300" -DYYCC_PATH="J:\YYCCommonplace\bin\install\Win32_Debug" ../.. +cmake --build . --config Debug + +CD .. +ECHO Build Done! diff --git a/shared/CMakeLists.txt b/shared/CMakeLists.txt index 576688c..8034473 100644 --- a/shared/CMakeLists.txt +++ b/shared/CMakeLists.txt @@ -4,6 +4,7 @@ add_library(VSWShared STATIC "") target_sources(VSWShared PRIVATE # Sources + DataTypes.cpp ) # Setup header files target_sources(VSWShared diff --git a/shared/DataTypes.cpp b/shared/DataTypes.cpp new file mode 100644 index 0000000..e69de29