summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Rowe <jroweboy@gmail.com>2015-03-26 11:00:49 +0100
committerJames Rowe <jroweboy@gmail.com>2015-03-26 11:04:24 +0100
commit5b9a5493c5151fe326b495c944687fc690598ef5 (patch)
tree147a67ec72c914a4e6bb5a9d6f004cbcf55f64d7
parentChanges to bring the previous commits in line with the comments on thepull request. Made the debug build a true debug build with no optimizxations and the RelWithDebInfo is what it says it is too. Changed the copying of the dlls to the build directories to happen at configuration time instead of build time (diff)
downloadyuzu-5b9a5493c5151fe326b495c944687fc690598ef5.tar
yuzu-5b9a5493c5151fe326b495c944687fc690598ef5.tar.gz
yuzu-5b9a5493c5151fe326b495c944687fc690598ef5.tar.bz2
yuzu-5b9a5493c5151fe326b495c944687fc690598ef5.tar.lz
yuzu-5b9a5493c5151fe326b495c944687fc690598ef5.tar.xz
yuzu-5b9a5493c5151fe326b495c944687fc690598ef5.tar.zst
yuzu-5b9a5493c5151fe326b495c944687fc690598ef5.zip
-rw-r--r--CMakeLists.txt16
-rw-r--r--src/citra_qt/CMakeLists.txt53
2 files changed, 34 insertions, 35 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 64907a271..5cae66dec 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,29 +12,29 @@ else()
add_definitions(/D_CRT_SECURE_NO_WARNINGS)
# set up output paths for executable binaries (.exe-files, and .dll-files on DLL-capable platforms)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
- set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo CACHE TYPE INTERNAL)
+ set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo CACHE STRING "" FORCE)
# Tweak optimization settings
# As far as I can tell, there's no way to override the CMake defaults while leaving user
# changes intact, so we'll just clobber everything and say sorry.
message(STATUS "Cache compiler flags ignored, please edit CMakeLists.txt to change the flags.")
- # /MP - Multi-threaded compilation
- # /Ox - Full optimization
+ # /O2 - Optimization level 2
# /Oy- - Don't omit frame pointer
# /GR- - Disable RTTI
# /GS- - No stack buffer overflow checks
# /EHsc - C++-only exception handling semantics
- set(optimization_flags "/MP /Ox /Oy- /GR- /GS- /EHsc")
+ set(optimization_flags "/O2 /Oy- /GR- /GS- /EHsc")
+ # /MP - Multi-threaded compilation
# /Zi - Output debugging information
# /Zo - enahnced debug info for optimized builds
# /MDd - Multi-threaded Debug Runtime DLL
set(CMAKE_C_FLAGS_DEBUG "/MP /MDd /Zi" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS_DEBUG "/MP /MDd /Zi" CACHE STRING "" FORCE)
# /MD - Multi-threaded runtime DLL
- set(CMAKE_C_FLAGS_RELEASE "${optimization_flags} /MD" CACHE STRING "" FORCE)
- set(CMAKE_CXX_FLAGS_RELEASE "${optimization_flags} /MD" CACHE STRING "" FORCE)
- set(CMAKE_C_FLAGS_RELWITHDEBINFO "${optimization_flags} /MD /Zi /Zo" CACHE STRING "" FORCE)
- set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${optimization_flags} /MD /Zi /Zo" CACHE STRING "" FORCE)
+ set(CMAKE_C_FLAGS_RELEASE "${optimization_flags} /MP /MD" CACHE STRING "" FORCE)
+ set(CMAKE_CXX_FLAGS_RELEASE "${optimization_flags} /MP /MD" CACHE STRING "" FORCE)
+ set(CMAKE_C_FLAGS_RELWITHDEBINFO "${optimization_flags} /MP /MD /Zi /Zo" CACHE STRING "" FORCE)
+ set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${optimization_flags} /MP /MD /Zi /Zo" CACHE STRING "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "/DEBUG" CACHE STRING "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "/DEBUG" CACHE STRING "" FORCE)
diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt
index 23513d7e2..2545b5d6a 100644
--- a/src/citra_qt/CMakeLists.txt
+++ b/src/citra_qt/CMakeLists.txt
@@ -77,34 +77,33 @@ target_link_libraries(citra-qt ${PLATFORM_LIBRARIES})
if (Qt5_FOUND AND MSVC)
set(Qt5_DLL_DIR "${Qt5_DIR}/../../../bin")
- file(GLOB Qt5_DEBUG_DLLS
- "${Qt5_DLL_DIR}/icudt*.dll"
- "${Qt5_DLL_DIR}/icuin*.dll"
- "${Qt5_DLL_DIR}/icuuc*.dll"
- "${Qt5_DLL_DIR}/Qt5Cored.*"
- "${Qt5_DLL_DIR}/Qt5Guid.*"
- "${Qt5_DLL_DIR}/Qt5OpenGLd.*"
- "${Qt5_DLL_DIR}/Qt5Widgetsd.*"
+ set(Qt5_PLATFORMS_DIR "${Qt5_DIR}/../../../plugins/platforms/")
+ set(Qt5_DLLS
+ icudt*.dll
+ icuin*.dll
+ icuuc*.dll
+ Qt5Core$<$<CONFIG:Debug>:d>.*
+ Qt5Gui$<$<CONFIG:Debug>:d>.*
+ Qt5OpenGL$<$<CONFIG:Debug>:d>.*
+ Qt5Widgets$<$<CONFIG:Debug>:d>.*
)
- file(GLOB Qt5_RELEASE_DLLS
- "${Qt5_DLL_DIR}/icudt*.dll"
- "${Qt5_DLL_DIR}/icuin*.dll"
- "${Qt5_DLL_DIR}/icuuc*.dll"
- "${Qt5_DLL_DIR}/Qt5Core.*"
- "${Qt5_DLL_DIR}/Qt5Gui.*"
- "${Qt5_DLL_DIR}/Qt5OpenGL.*"
- "${Qt5_DLL_DIR}/Qt5Widgets.*"
+ set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/")
+ set(PLATFORMS ${DLL_DEST}platforms/)
+
+ # windows commandline expects the / to be \ so switch them
+ string(REPLACE "/" "\\" Qt5_DLL_DIR ${Qt5_DLL_DIR})
+ string(REPLACE "/" "\\" Qt5_PLATFORMS_DIR ${Qt5_PLATFORMS_DIR})
+ string(REPLACE "/" "\\" DLL_DEST ${DLL_DEST})
+ string(REPLACE "/" "\\" PLATFORMS ${PLATFORMS})
+
+ # /NJH /NJS /NDL /NFL /NC /NS /NP - Silence any output
+ # cmake adds an extra check for command success which doesn't work too well with robocopy
+ # so trick it into thinking the command was successful with the || cmd /c "exit /b 0"
+ add_custom_command(TARGET citra-qt POST_BUILD
+ COMMAND robocopy ${Qt5_DLL_DIR} ${DLL_DEST} ${Qt5_DLLS} /NJH /NJS /NDL /NFL /NC /NS /NP || cmd /c "exit /b 0"
+ COMMAND if not exist ${PLATFORMS} mkdir ${PLATFORMS} 2> nul
+ COMMAND robocopy ${Qt5_PLATFORMS_DIR} ${PLATFORMS} qwindows$<$<CONFIG:Debug>:d>.* /NJH /NJS /NDL /NFL /NC /NS /NP || cmd /c "exit /b 0"
)
- # make the output directories ahead of the time and copy in the needed Dlls now
- file(MAKE_DIRECTORY
- ${CMAKE_BINARY_DIR}/bin/Debug/
- ${CMAKE_BINARY_DIR}/bin/Release/
- ${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/
- )
- file(COPY ${Qt5_DEBUG_DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin/Debug/)
- file(COPY ${Qt5_RELEASE_DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin/Release/)
- file(COPY ${Qt5_RELEASE_DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/)
- unset(Qt5_RELEASE_DLLS)
- unset(Qt5_DEBUG_DLLS)
+ unset(Qt5_DLLS)
unset(Qt5_DLL_DIR)
endif()