# Global options set(CMAKE_CXX_FLAGS_DEBUG "/MD") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /UMBCS /D_UNICODE /DUNICODE") # Win32 Extensions if (CMAKE_SIZEOF_VOID_P EQUAL 4) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE") set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /LARGEADDRESSAWARE") ADD_DEFINITIONS(/arch:SSE2) endif() # Apply definitions add_compile_definitions(_WINDOWS) # Enable gcc/clang style for MSVC add_compile_options(/permissive- /fp:fast /wd4073 /wd4390 /wd4273 /sdl /wd4566 /wd4297 /wd4275 /wd4530) string(REGEX REPLACE "/EH[a-z]+" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) add_compile_options("$<$:/Od>" "$<$:/MD>" "/Ob1") add_compile_options("$<$:/Ot>" "$<$:/Ob2>" "$<$:/wd4577>") add_compile_options($<$:/MP>) add_compile_options(/wd4595 /wd4996 /wd4005) add_link_options("$<$:/SAFESEH:NO>") add_compile_options("$<$:/wd4530>" "$<$:/wd4251>" "$<$:/wd4530>") add_compile_options("$<$:/GF>" "$<$:/GF>") add_compile_options("$<$:/Oi>" "$<$:/Oi>") add_compile_options("$<$:/Oy>" "$<$:/Oy>") add_compile_options("$<$:/GT>" "$<$:/GT>") add_compile_options("$<$:/GL>" "$<$:/GL>") add_compile_options("$<$:/Ob2>") add_compile_options("$<$:/Ot>") add_link_options("$<$:/LTCG:incremental>" "$<$:/LTCG:incremental>") add_link_options("$<$:/INCREMENTAL:NO>" "$<$:/INCREMENTAL:NO>") ## Exceptions... if (NOT IXRAY_LDEBUG) add_compile_options("$<$:/EHsc>") endif() ## Edit and Continue mode if (IXRAY_ASAN) add_compile_options("$<$:/Zi>" "$<$:/Zi>" "$<$:/Zi>") else() add_compile_options("$<$:/ZI>" "$<$:/Zi>" "$<$:/Zi>") endif() if(${CMAKE_GENERATOR_PLATFORM} MATCHES "arm64") set(IXR_ARM_ENABLE ON) add_compile_options(/Zc:preprocessor) else() set(IXR_ARM_ENABLE OFF) endif() # Setup build patches set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) # Hack for COPY set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_EX ${CMAKE_BINARY_DIR}/bin/$/) # Other function(target_validate_pch target target_path) set_target_properties(${target} PROPERTIES DISABLE_PRECOMPILE_HEADERS ON) set_target_properties(${target} PROPERTIES COMPILE_FLAGS "/Yustdafx.h") set_source_files_properties(stdafx.cpp PROPERTIES COMPILE_FLAGS "/Ycstdafx.h") target_precompile_headers(${target} PRIVATE "stdafx.h") file(GLOB_RECURSE CORE_SOURCE_PCH_FILES "${target_path}/stdafx.*") file(GLOB_RECURSE CORE_SOURCE_ALL_C_FILES "${target_path}/*.c") set_source_files_properties(${CORE_SOURCE_ALL_C_FILES} PROPERTIES SKIP_PRECOMPILE_HEADERS ON) source_group("pch" FILES ${CORE_SOURCE_PCH_FILES}) endfunction() # Discord option(IXRAY_DISCORD_RPC "Enable Discord activity" ON) # Configure dependencies set(RENDERDOC_API "${CMAKE_CURRENT_SOURCE_DIR}/src/3rd-Party/renderdoc")