add_compile_definitions(SKYRIM) set(CommonLibPath "extern/CommonLibSSE-NG") set(CommonLibName "CommonLibSSE") add_library("${PROJECT_NAME}" SHARED) target_compile_features( "${PROJECT_NAME}" PRIVATE cxx_std_23 ) set_property(GLOBAL PROPERTY USE_FOLDERS ON) include(AddCXXFiles) add_cxx_files("${PROJECT_NAME}") configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Plugin.h.in ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h @ONLY ) configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/version.rc.in ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc @ONLY ) target_sources( "${PROJECT_NAME}" PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/cmake/Plugin.h ${CMAKE_CURRENT_BINARY_DIR}/cmake/version.rc ) target_precompile_headers( "${PROJECT_NAME}" PRIVATE include/PCH.h ) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_DEBUG OFF) set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_RUNTIME ON) set(BUILD_TESTS OFF) # Define _WINDOWS for all Windows builds (required by FidelityFX API loader) if(WIN32) add_compile_definitions(_WINDOWS) endif() if(CMAKE_GENERATOR MATCHES "Visual Studio") add_compile_definitions(_UNICODE) target_compile_definitions(${PROJECT_NAME} PRIVATE "$<$:DEBUG>") set(SC_DEBUG_OPTS "/fp:strict;/ZI;/Od;/Gy") set(SC_RELEASE_OPTS "/Zi;/fp:fast;/GL;/Gy-;/Gm-;/Gw;/sdl-;/GS-;/guard:cf-;/O2;/Ob2;/Oi;/Ot;/Oy;/fp:except-") target_compile_options( "${PROJECT_NAME}" PRIVATE /MP /W4 /WX /permissive- /Zc:alignedNew /Zc:auto /Zc:__cplusplus /Zc:externC /Zc:externConstexpr /Zc:forScope /Zc:hiddenFriend /Zc:implicitNoexcept /Zc:lambda /Zc:noexceptTypes /Zc:preprocessor /Zc:referenceBinding /Zc:rvalueCast /Zc:sizedDealloc /Zc:strictStrings /Zc:ternary /Zc:threadSafeInit /Zc:trigraphs /Zc:wchar_t /wd4200 # nonstandard extension used : zero-sized array in struct/union ) target_compile_options(${PROJECT_NAME} PUBLIC "$<$:${SC_DEBUG_OPTS}>") target_compile_options(${PROJECT_NAME} PUBLIC "$<$:${SC_RELEASE_OPTS}>") target_link_options( ${PROJECT_NAME} PRIVATE /WX "$<$:/INCREMENTAL;/OPT:NOREF;/OPT:NOICF>" "$<$:/LTCG;/INCREMENTAL:NO;/OPT:REF;/OPT:ICF;/DEBUG:FULL>" ) endif() add_subdirectory(${CommonLibPath} ${CommonLibName} EXCLUDE_FROM_ALL) find_package(spdlog CONFIG REQUIRED) target_include_directories( ${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/cmake ${CMAKE_CURRENT_SOURCE_DIR}/src ) target_link_libraries( ${PROJECT_NAME} PUBLIC CommonLibSSE::CommonLibSSE )