diff --git a/CMakeLists.txt b/CMakeLists.txt index ae8130289..ab5dc7fcc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,27 +20,42 @@ set(CMAKE_CONFIGURATION_TYPES ) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") -function(configure_msvc_target target) - target_compile_options(${target} PRIVATE - $<$,$>:/W3> - $<$,$>:/W0> - $<$:/MP> - $<$:/FS> - $<$:/GS> - $<$:/EHsc> - $<$:/GR> - $<$,$>:/Od> - $<$,$>:/GL /O2 /Oi /GT /GF> - ) -endfunction() -function(configure_clang_target target) - target_compile_options(${target} PRIVATE - $<$,$>:-O0 -Wall> - $<$,$>:-O2 -w -flto> - ) - target_link_options(${target} PRIVATE - $<$:-flto> - ) +function(configure_compiler_target target) + # MSVC and compatible compilers (like Clang-cl) + if (MSVC) + target_compile_options(${target} PRIVATE + $<$,$>:/W3> + $<$,$>:/W0> + $<$:/MP> + $<$:/FS> + $<$:/GS> + $<$:/EHsc> + $<$:/GR> + $<$,$>:/Od> + $<$,$>:/O2 /Oi /GT /GF> + ) + endif() + + # MSVC + if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + target_compile_options(${target} PRIVATE + $<$,$>:/GL> + ) + target_link_options(${target} PRIVATE + $<$:/LTCG:incremental> + ) + endif() + + # Clang + if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + target_compile_options(${target} PRIVATE + $<$,$>:-O0 -Wall> + $<$,$>:-O2 -w -flto> + ) + target_link_options(${target} PRIVATE + $<$:-flto> + ) + endif() endfunction() diff --git a/Minecraft.Client/CMakeLists.txt b/Minecraft.Client/CMakeLists.txt index 1724f4a2c..e316ca719 100644 --- a/Minecraft.Client/CMakeLists.txt +++ b/Minecraft.Client/CMakeLists.txt @@ -39,15 +39,8 @@ target_compile_definitions(Minecraft.Client PRIVATE ) target_precompile_headers(Minecraft.Client PRIVATE "$<$:stdafx.h>") set_source_files_properties(compat_shims.cpp PROPERTIES SKIP_PRECOMPILE_HEADERS ON) # This redefines internal MSVC CRT symbols which will cause an issue with PCH -if(MSVC) - configure_msvc_target(Minecraft.Client) - target_link_options(Minecraft.Client PRIVATE - $<$:/LTCG:incremental> - ) -endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - configure_clang_target(Minecraft.Client) -endif() + +configure_compiler_target(Minecraft.Client) set_target_properties(Minecraft.Client PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/$" @@ -83,10 +76,13 @@ endforeach() include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/AssetCopyTargets.cmake") setup_asset_copy_targets() +# This is needed for VS to find the script, command line seems to work without it +set(COPY_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CopyAssets.cmake") + # Copy redist files add_custom_target(CopyRedist ALL COMMAND ${CMAKE_COMMAND} - "-DCOPY_SOURCE=${CMAKE_SOURCE_DIR}/x64/Release" + "-DCOPY_SOURCE=${CMAKE_CURRENT_SOURCE_DIR}/Windows64/Iggy/lib/redist64" # This will copy the windows redist regardless of platform "-DCOPY_DEST=${CMAKE_CURRENT_BINARY_DIR}/$" -P "${COPY_SCRIPT}" COMMENT "Copying redist files..." diff --git a/Minecraft.World/CMakeLists.txt b/Minecraft.World/CMakeLists.txt index 24cf7f9bd..e397bf292 100644 --- a/Minecraft.World/CMakeLists.txt +++ b/Minecraft.World/CMakeLists.txt @@ -26,9 +26,5 @@ target_compile_definitions(Minecraft.World PRIVATE _LIB ) target_precompile_headers(Minecraft.World PRIVATE "$<$:stdafx.h>") -if(MSVC) - configure_msvc_target(Minecraft.World) -endif() -if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - configure_clang_target(Minecraft.World) -endif() + +configure_compiler_target(Minecraft.World)