# Try to initialize build environment include(${CMAKE_CURRENT_LIST_DIR}/../cmake/init_materializer_env.cmake) # Create library or executable according to build type if (MATERIALIZER_BUILD_TYPE STREQUAL "plugin") add_library(VSWMaterializer SHARED "") else () add_executable(VSWMaterializer "") endif () # Setup source files target_sources(VSWMaterializer PRIVATE # Sources # Main main.cpp PluginMain.cpp StandaloneMain.cpp # Exporter ExportDocument.cpp ExportEnvironment.cpp ExportScript.cpp # Utilities Utilities.cpp Database.cpp # MFC parts ExportDialog.cpp # Resources file "$<$:Materializer.rc>" # Defination file "$<$:Materializer.def>" ) # Setup header files target_sources(VSWMaterializer PRIVATE FILE_SET HEADERS FILES # Headers # Misc stdafx.hpp # Main PluginMain.hpp StandaloneMain.hpp # Exporter ExportCore.hpp # Utilities Utilities.hpp Database.hpp DataTypes.hpp # MFC Parts resource.h ExportDialog.hpp ) # Setup header infomations target_include_directories(VSWMaterializer PRIVATE ${CMAKE_CURRENT_LIST_DIR} YYCC::YYCCommonplace SQLite3::SQLite3 VirtoolsSDK VSWShared ) # Setup linked library target_link_libraries(VSWMaterializer PRIVATE YYCC::YYCCommonplace SQLite3::SQLite3 VirtoolsSDK VSWShared ) # Setup C++ standard (we require C++ 17 because Virtools can hold more higher C++ standard) set_target_properties(VSWMaterializer PROPERTIES CXX_STANDARD 17 CXX_STANDARD_REQUIRED 17 CXX_EXTENSION OFF ) # Setup MFC used in shared library if (MATERIALIZER_BUILD_TYPE STREQUAL "plugin") set_target_properties(VSWMaterializer PROPERTIES CMAKE_MFC_FLAG 2 ) endif () # MSVC specific correction target_compile_definitions(VSWMaterializer PRIVATE # MFC macro _AFXDLL # Materializer build type "MATERIALIZER_$" # Materializer debug or release "$<$:MATERIALIZER_DEBUG>" "$<$:MATERIALIZER_DEBUG>" # Multibyte encoding $<$:MBCS> $<$:_MBCS> ) target_compile_options(VSWMaterializer PRIVATE $<$:/utf-8> ) # Install binary and headers install(TARGETS VSWMaterializer CONFIGURATIONS Release RUNTIME DESTINATION ${VSW_INSTALL_BIN_PATH} )