Changes 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

This commit is contained in:
James Rowe 2015-02-26 20:24:22 -07:00
parent a9620cec41
commit c7bd89d6f0
2 changed files with 18 additions and 27 deletions

View File

@ -12,7 +12,8 @@ else()
add_definitions(/D_CRT_SECURE_NO_WARNINGS) add_definitions(/D_CRT_SECURE_NO_WARNINGS)
# set up output paths for executable binaries (.exe-files, and .dll-files on DLL-capable platforms) # 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_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 # Tweak optimization settings
# As far as I can tell, there's no way to override the CMake defaults while leaving user # 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. # changes intact, so we'll just clobber everything and say sorry.
@ -27,11 +28,11 @@ else()
# /Zi - Output debugging information # /Zi - Output debugging information
# /Zo - enahnced debug info for optimized builds # /Zo - enahnced debug info for optimized builds
# /MDd - Multi-threaded Debug Runtime DLL # /MDd - Multi-threaded Debug Runtime DLL
set(CMAKE_C_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 "${optimization_flags} /MDd /Zi /Zo" CACHE STRING "" FORCE) set(CMAKE_CXX_FLAGS_DEBUG "/MP /MDd /Zi" CACHE STRING "" FORCE)
# /MD - Multi-threaded runtime DLL # /MD - Multi-threaded runtime DLL
set(CMAKE_C_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 /Zi" 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_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_CXX_FLAGS_RELWITHDEBINFO "${optimization_flags} /MD /Zi /Zo" CACHE STRING "" FORCE)

View File

@ -68,9 +68,7 @@ target_link_libraries(citra-qt ${PLATFORM_LIBRARIES})
#install(TARGETS citra-qt RUNTIME DESTINATION ${bindir}) #install(TARGETS citra-qt RUNTIME DESTINATION ${bindir})
# setup a post build to copy the Qt Dlls to the right place on Windows MSVC if (Qt5_FOUND AND 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)
set(Qt5_DLL_DIR "${Qt5_DIR}/../../../bin") set(Qt5_DLL_DIR "${Qt5_DIR}/../../../bin")
file(GLOB Qt5_DEBUG_DLLS file(GLOB Qt5_DEBUG_DLLS
"${Qt5_DLL_DIR}/icudt*.dll" "${Qt5_DLL_DIR}/icudt*.dll"
@ -81,15 +79,6 @@ if (Qt5_FOUND)
"${Qt5_DLL_DIR}/Qt5OpenGLd.*" "${Qt5_DLL_DIR}/Qt5OpenGLd.*"
"${Qt5_DLL_DIR}/Qt5Widgetsd.*" "${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 file(GLOB Qt5_RELEASE_DLLS
"${Qt5_DLL_DIR}/icudt*.dll" "${Qt5_DLL_DIR}/icudt*.dll"
"${Qt5_DLL_DIR}/icuin*.dll" "${Qt5_DLL_DIR}/icuin*.dll"
@ -99,15 +88,16 @@ if (Qt5_FOUND)
"${Qt5_DLL_DIR}/Qt5OpenGL.*" "${Qt5_DLL_DIR}/Qt5OpenGL.*"
"${Qt5_DLL_DIR}/Qt5Widgets.*" "${Qt5_DLL_DIR}/Qt5Widgets.*"
) )
foreach(Dll ${Qt5_RELEASE_DLLS}) # make the output directories ahead of the time and copy in the needed Dlls now
add_custom_command(TARGET citra-qt POST_BUILD file(MAKE_DIRECTORY
COMMAND if not exist "${CMAKE_BINARY_DIR}/bin/Release/" goto :cmEnd ${CMAKE_BINARY_DIR}/bin/Debug/
COMMAND ${CMAKE_COMMAND} -E ${CMAKE_BINARY_DIR}/bin/Release/
copy ${Dll} "${CMAKE_BINARY_DIR}/bin/Release/") ${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/
add_custom_command(TARGET citra-qt POST_BUILD )
COMMAND if not exist "${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/" goto :cmEnd file(COPY ${Qt5_DEBUG_DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin/Debug/)
COMMAND ${CMAKE_COMMAND} -E file(COPY ${Qt5_RELEASE_DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin/Release/)
copy ${Dll} "${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/") file(COPY ${Qt5_RELEASE_DLLS} DESTINATION ${CMAKE_BINARY_DIR}/bin/RelWithDebInfo/)
endforeach() unset(Qt5_RELEASE_DLLS)
unset(Qt5_DEBUG_DLLS)
unset(Qt5_DLL_DIR) unset(Qt5_DLL_DIR)
endif() endif()