diff --git a/CMakeLists.txt b/CMakeLists.txt index fbfef2811..64907a271 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,8 @@ 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 FORCE) + set(CMAKE_CONFIGURATION_TYPES Debug Release RelWithDebInfo CACHE TYPE INTERNAL) + # 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. @@ -27,11 +28,11 @@ else() # /Zi - Output debugging information # /Zo - enahnced debug info for optimized builds # /MDd - Multi-threaded Debug Runtime DLL - set(CMAKE_C_FLAGS_DEBUG "${optimization_flags} /MDd /Zi /Zo" CACHE STRING "" FORCE) - set(CMAKE_CXX_FLAGS_DEBUG "${optimization_flags} /MDd /Zi /Zo" CACHE STRING "" FORCE) + 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 /Zi" CACHE STRING "" FORCE) - set(CMAKE_CXX_FLAGS_RELEASE "${optimization_flags} /MD /Zi" CACHE STRING "" FORCE) + 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) diff --git a/src/citra_qt/CMakeLists.txt b/src/citra_qt/CMakeLists.txt index 0565a8411..a06b8ff55 100644 --- a/src/citra_qt/CMakeLists.txt +++ b/src/citra_qt/CMakeLists.txt @@ -68,9 +68,7 @@ target_link_libraries(citra-qt ${PLATFORM_LIBRARIES}) #install(TARGETS citra-qt RUNTIME DESTINATION ${bindir}) -# setup a post build to copy the Qt Dlls to the right place on Windows MSVC -# I only have Qt 5 so if someone wants to add this for Qt 4 as well that would be great -if (Qt5_FOUND) +if (Qt5_FOUND AND MSVC) set(Qt5_DLL_DIR "${Qt5_DIR}/../../../bin") file(GLOB Qt5_DEBUG_DLLS "${Qt5_DLL_DIR}/icudt*.dll" @@ -81,15 +79,6 @@ if (Qt5_FOUND) "${Qt5_DLL_DIR}/Qt5OpenGLd.*" "${Qt5_DLL_DIR}/Qt5Widgetsd.*" ) - foreach(Dll ${Qt5_DEBUG_DLLS}) - # the if not exist skips this copy if the build directory doesn't exist so it doesn't error out - add_custom_command(TARGET citra-qt POST_BUILD - COMMAND if not exist "${CMAKE_BINARY_DIR}/bin/Debug/" goto :cmEnd - COMMAND ${CMAKE_COMMAND} -E - copy ${Dll} "${CMAKE_BINARY_DIR}/bin/Debug/") - endforeach() - # sooo here's a fun struggle. I can't set a custom command for a single build target, - # so instead I have to add all these to every configuration in VS anyway. file(GLOB Qt5_RELEASE_DLLS "${Qt5_DLL_DIR}/icudt*.dll" "${Qt5_DLL_DIR}/icuin*.dll" @@ -99,15 +88,16 @@ if (Qt5_FOUND) "${Qt5_DLL_DIR}/Qt5OpenGL.*" "${Qt5_DLL_DIR}/Qt5Widgets.*" ) - foreach(Dll ${Qt5_RELEASE_DLLS}) - add_custom_command(TARGET citra-qt POST_BUILD - COMMAND if not exist "${CMAKE_BINARY_DIR}/bin/Release/" goto :cmEnd - COMMAND ${CMAKE_COMMAND} -E - copy ${Dll} "${CMAKE_BINARY_DIR}/bin/Release/") - add_custom_command(TARGET citra-qt POST_BUILD - COMMAND if not exist "${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/" goto :cmEnd - COMMAND ${CMAKE_COMMAND} -E - copy ${Dll} "${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/") - endforeach() + # 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_DLL_DIR) endif()