2024-07-24 18:12:49 +08:00
|
|
|
# Try to initialize build environment
|
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/../cmake/init_materializer_env.cmake)
|
2024-07-23 21:37:56 +08:00
|
|
|
|
|
|
|
|
# Create library or executable according to build type
|
2024-08-01 17:12:31 +08:00
|
|
|
if (MATERIALIZER_BUILD_TYPE STREQUAL "plugin")
|
|
|
|
|
add_library(VSWMaterializer SHARED "")
|
2024-07-23 21:37:56 +08:00
|
|
|
else ()
|
|
|
|
|
add_executable(VSWMaterializer "")
|
|
|
|
|
endif ()
|
2024-07-24 22:28:44 +08:00
|
|
|
# Setup source files
|
2024-07-23 21:37:56 +08:00
|
|
|
target_sources(VSWMaterializer
|
|
|
|
|
PRIVATE
|
|
|
|
|
# Sources
|
2024-08-01 22:38:55 +08:00
|
|
|
# Main
|
2024-07-23 21:37:56 +08:00
|
|
|
main.cpp
|
2024-08-01 17:12:31 +08:00
|
|
|
PluginMain.cpp
|
|
|
|
|
StandaloneMain.cpp
|
2024-08-01 22:38:55 +08:00
|
|
|
# Exporter
|
|
|
|
|
ExportContext.cpp
|
|
|
|
|
ExportEnvironment.cpp
|
|
|
|
|
ExportScript.cpp
|
|
|
|
|
# Utilities
|
|
|
|
|
Utilities.cpp
|
|
|
|
|
Database.cpp
|
2024-08-01 17:12:31 +08:00
|
|
|
# Defination file
|
|
|
|
|
"$<$<STREQUAL:${MATERIALIZER_BUILD_TYPE},plugin>:Materializer.def>"
|
2024-07-23 21:37:56 +08:00
|
|
|
)
|
2024-07-24 22:28:44 +08:00
|
|
|
# Setup header files
|
2024-07-23 21:37:56 +08:00
|
|
|
target_sources(VSWMaterializer
|
2024-07-24 22:28:44 +08:00
|
|
|
PRIVATE
|
2024-07-23 21:37:56 +08:00
|
|
|
FILE_SET HEADERS
|
|
|
|
|
FILES
|
|
|
|
|
# Headers
|
2024-08-01 22:38:55 +08:00
|
|
|
# Misc
|
2024-07-23 21:37:56 +08:00
|
|
|
stdafx.hpp
|
2024-07-24 22:28:44 +08:00
|
|
|
resource.h
|
2024-08-01 22:38:55 +08:00
|
|
|
# Main
|
2024-08-01 17:12:31 +08:00
|
|
|
PluginMain.hpp
|
|
|
|
|
StandaloneMain.hpp
|
2024-08-01 22:38:55 +08:00
|
|
|
# Exporter
|
|
|
|
|
ExportContext.hpp
|
|
|
|
|
ExportEnvironment.hpp
|
|
|
|
|
ExportScript.hpp
|
|
|
|
|
# Utilities
|
|
|
|
|
Utilities.hpp
|
|
|
|
|
Database.hpp
|
|
|
|
|
DataTypes.hpp
|
2024-07-23 21:37:56 +08:00
|
|
|
)
|
|
|
|
|
# Setup header infomations
|
|
|
|
|
target_include_directories(VSWMaterializer
|
2024-07-24 22:28:44 +08:00
|
|
|
PRIVATE
|
2024-07-23 21:37:56 +08:00
|
|
|
${CMAKE_CURRENT_LIST_DIR}
|
2024-08-01 17:12:31 +08:00
|
|
|
YYCC::YYCCommonplace
|
2024-07-24 22:28:44 +08:00
|
|
|
SQLite3::SQLite3
|
|
|
|
|
VirtoolsSDK
|
|
|
|
|
VSWShared
|
|
|
|
|
)
|
|
|
|
|
# Setup linked library
|
|
|
|
|
target_link_libraries(VSWMaterializer
|
|
|
|
|
PRIVATE
|
2024-08-01 17:12:31 +08:00
|
|
|
YYCC::YYCCommonplace
|
2024-07-24 22:28:44 +08:00
|
|
|
SQLite3::SQLite3
|
|
|
|
|
VirtoolsSDK
|
|
|
|
|
VSWShared
|
2024-07-23 21:37:56 +08:00
|
|
|
)
|
2024-07-24 18:12:49 +08:00
|
|
|
# Setup C++ standard (we require C++ 17 because Virtools can hold more higher C++ standard)
|
2024-07-23 21:37:56 +08:00
|
|
|
set_target_properties(VSWMaterializer
|
|
|
|
|
PROPERTIES
|
2024-07-24 18:12:49 +08:00
|
|
|
CXX_STANDARD 17
|
|
|
|
|
CXX_STANDARD_REQUIRED 17
|
2024-07-23 21:37:56 +08:00
|
|
|
CXX_EXTENSION OFF
|
|
|
|
|
)
|
2024-08-01 17:12:31 +08:00
|
|
|
# Setup MFC use
|
|
|
|
|
set_target_properties(VSWMaterializer
|
|
|
|
|
PROPERTIES
|
|
|
|
|
CMAKE_MFC_FLAG 2
|
|
|
|
|
)
|
2024-07-23 21:37:56 +08:00
|
|
|
# MSVC specific correction
|
|
|
|
|
target_compile_definitions(VSWMaterializer
|
|
|
|
|
PRIVATE
|
2024-08-01 17:12:31 +08:00
|
|
|
# MFC macro
|
|
|
|
|
_AFXDLL
|
|
|
|
|
# Materializer build type
|
|
|
|
|
"MATERIALIZER_$<UPPER_CASE:${MATERIALIZER_BUILD_TYPE}>"
|
|
|
|
|
# Materializer debug or release
|
|
|
|
|
"$<$<CONFIG:Debug>:MATERIALIZER_DEBUG>"
|
|
|
|
|
"$<$<CONFIG:Release,RelWithDebInfo,MinSizeRel>:MATERIALIZER_DEBUG>"
|
|
|
|
|
# Multibyte encoding
|
2024-07-24 22:28:44 +08:00
|
|
|
$<$<CXX_COMPILER_ID:MSVC>:MBCS>
|
|
|
|
|
$<$<CXX_COMPILER_ID:MSVC>:_MBCS>
|
2024-07-23 21:37:56 +08:00
|
|
|
)
|
|
|
|
|
target_compile_options(VSWMaterializer
|
|
|
|
|
PRIVATE
|
|
|
|
|
$<$<CXX_COMPILER_ID:MSVC>:/utf-8>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Install binary and headers
|
|
|
|
|
install(TARGETS VSWMaterializer
|
|
|
|
|
CONFIGURATIONS Release
|
|
|
|
|
RUNTIME DESTINATION ${VSW_INSTALL_BIN_PATH}
|
|
|
|
|
)
|