Re #58 Fixed crash on loading credits menu + QtCreator+MinGW build + CMake configuration polishing

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@5364 30fe4595-0a0c-4342-8851-515496e4dcbd
This commit is contained in:
pouillot 2013-03-25 19:40:53 +00:00
parent 558aade200
commit 08a45cbc40
6 changed files with 63 additions and 79 deletions

View File

@ -109,8 +109,8 @@ CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cmake/doxygenconfig.in.cmake
# Fictive = no-output target, for having source files available in IDEs.
SET(_SOURCES credits.xml CHANGES.txt COPYING.txt INSTALL.txt README.txt TODO.txt)
ADD_CUSTOM_TARGET(rootdoc SOURCES ${_SOURCES})
SET(_SOURCES CHANGES.txt COPYING.txt INSTALL.txt README.txt TODO.txt)
ADD_CUSTOM_TARGET(rootdoc SOURCES ${_SOURCES} data/data/credits.xml)
# Install top tree data files
SD_INSTALL_FILES(DATA "/" FILES ${_SOURCES})

View File

@ -72,11 +72,13 @@ MACRO(SD_UPDATE_SETTINGS_VERSION)
# In order to run xmlversion.exe in the build tree (see below), under Windows,
# we nearly always have to copy 3rd party dependency and compiler run-time DLLs next to it.
# Note: Not really needed as speed-dreams-2 is built before settings_versions,
# and so already did this job. But in case someone changes the build order ...
IF(WIN32)
SET(_DLLS_TO_INSTALL)
# Internal dependencies (needed in all cases).
# Internal dependencies : not needed, as we already generate them in SD_BINDIR.
# 3rd party dependencies
# (not needed for MinGW builds through the "MSYS Makefiles" generator,
@ -116,6 +118,7 @@ MACRO(SD_UPDATE_SETTINGS_VERSION)
# TODO: Use Custom3rdParty macros for this (and thus avoid duplicate code) ?
IF(MINGW AND NOT CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
GET_FILENAME_COMPONENT(_MINGW_BINDIR "${CMAKE_CXX_COMPILER}" PATH)
LIST(APPEND _DLLS_TO_INSTALL "${_MINGW_BINDIR}/libstdc++-6.dll")
LIST(APPEND _DLLS_TO_INSTALL "${_MINGW_BINDIR}/libgcc_s_dw2-1.dll")
@ -144,31 +147,32 @@ MACRO(SD_UPDATE_SETTINGS_VERSION)
#MESSAGE(STATUS "SD_UPDATE_SETTINGS_VERSION : XMLVERSION_ARGS=${_XMLVER_ARGS}")
GET_FILENAME_COMPONENT(_XMLVER_DIR ${_XMLVER_EXE} PATH)
GET_FILENAME_COMPONENT(_XMLVER_NAME ${_XMLVER_EXE} NAME)
SET(_SRC_FILE)
FOREACH(_ARG ${_XMLVER_ARGS})
#MESSAGE(STATUS "${_ARG}")
IF(NOT _SRC_FILE)
SET(_SRC_FILE ${_ARG})
ELSE()
SET(_USER_DIR ${_ARG})
# Register file for run-time install/update at game startup
# (through filesetup.cpp services)
IF(WIN32)
ADD_CUSTOM_COMMAND(TARGET settings_versions POST_BUILD
WORKING_DIRECTORY "${_XMLVER_DIR}"
COMMAND ${CMAKE_COMMAND} -E echo "${_XMLVER_EXE}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
COMMAND "${_XMLVER_NAME}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
VERBATIM)
ELSE(WIN32)
ADD_CUSTOM_COMMAND(TARGET settings_versions POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo "${_XMLVER_EXE}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
COMMAND "${_XMLVER_EXE}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
VERBATIM)
ENDIF(WIN32)
SET(_SRC_FILE ${_ARG})
ELSE()
SET(_USER_DIR ${_ARG})
# Register file for run-time install/update at game startup, thanks to xmlversion
# (filesetup.cpp services will do the job at game startup).
ADD_CUSTOM_COMMAND(TARGET settings_versions POST_BUILD
WORKING_DIRECTORY "${_XMLVER_DIR}"
COMMAND ${CMAKE_COMMAND} -E echo "${_XMLVER_EXE}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
COMMAND "${_XMLVER_NAME}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}/version.xml" "${_SRC_FILE}" "${_USER_DIR}" "${PROJECT_SOURCE_DIR}/data"
VERBATIM)
# Done for this {file, folder} couple, ready for next one.
SET(_SRC_FILE)
ENDIF()
ENDFOREACH()
# Install version.xml

View File

@ -189,21 +189,20 @@ MACRO(SD_ADD_EXECUTABLE TARGET_NAME)
ADD_EXECUTABLE(${TARGET_NAME} ${ARGN})
# Change target location (for running in build-tree without installing).
IF(WIN32)
SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_BINDIR}")
GET_TARGET_PROPERTY(_TARGET_LOC ${TARGET_NAME} LOCATION)
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo Copying "${_TARGET_LOC}" to "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
COMMAND ${CMAKE_COMMAND} -E copy "${_TARGET_LOC}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
VERBATIM)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${_TGT_DIR})
ELSE()
IF(MSVC)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_BINDIR})
FOREACH(_CFG ${CMAKE_CONFIGURATION_TYPES})
STRING(TOUPPER ${_CFG} _CFG)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY_${_CFG} "${_TGT_DIR}")
ENDFOREACH()
ENDIF()
ENDIF(MSVC)
# Make the "settings_versions" target depend on this target,
# in order settings_versions is built after them.
@ -230,25 +229,13 @@ MACRO(SD_ADD_LIBRARY TARGET_NAME TARGET_TYPE)
ADD_LIBRARY(${TARGET_NAME} ${TARGET_TYPE} ${ARGN})
ENDIF()
# Change target location (for running in build-tree without installing).
# Determine target location (for running in build-tree without installing).
IF(${TARGET_TYPE} STREQUAL "SHARED")
IF(WIN32)
# Why a different stuff than for MODULE or ROBOT ?
GET_TARGET_PROPERTY(_TARGET_LOC ${TARGET_NAME} LOCATION)
ADD_CUSTOM_COMMAND(TARGET ${TARGET_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E echo Copying "${_TARGET_LOC}" to "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
COMMAND ${CMAKE_COMMAND} -E copy "${_TARGET_LOC}" "${CMAKE_BINARY_DIR}/${SD_BINDIR}"
VERBATIM)
ELSE(WIN32)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib)
SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_BINDIR}")
ELSE()
SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_LIBDIR}/lib")
ENDIF()
ELSEIF(${TARGET_TYPE} STREQUAL "MODULE")
@ -257,50 +244,41 @@ MACRO(SD_ADD_LIBRARY TARGET_NAME TARGET_TYPE)
GET_FILENAME_COMPONENT(_TGT_TYPE ${_TGT_LOC} PATH)
GET_FILENAME_COMPONENT(_TGT_TYPE ${_TGT_TYPE} PATH)
IF(MSVC)
# Take care of the build config-specific Debug/Relesase/... folder.
# Take care of the build config-specific Debug/Release/... folder.
GET_FILENAME_COMPONENT(_TGT_TYPE ${_TGT_TYPE} PATH)
ENDIF()
GET_FILENAME_COMPONENT(_TGT_TYPE ${_TGT_TYPE} NAME)
SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_LIBDIR}/modules/${_TGT_TYPE}")
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${_TGT_DIR}
LIBRARY_OUTPUT_DIRECTORY ${_TGT_DIR})
IF(MSVC)
FOREACH(_CFG ${CMAKE_CONFIGURATION_TYPES})
STRING(TOUPPER ${_CFG} _CFG)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY_${_CFG} ${_TGT_DIR}
LIBRARY_OUTPUT_DIRECTORY_${_CFG} ${_TGT_DIR})
ENDFOREACH()
ENDIF()
IF(UNIX OR MINGW)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "")
ENDIF(UNIX OR MINGW)
ELSEIF(${TARGET_TYPE} STREQUAL "ROBOT")
SET(_TGT_DIR "${CMAKE_BINARY_DIR}/${SD_LIBDIR}/drivers/${TARGET_NAME}")
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${_TGT_DIR}
LIBRARY_OUTPUT_DIRECTORY ${_TGT_DIR})
ELSE()
IF(MSVC)
MESSSAGE(FATAL "Unsupported library type ${TARGET_TYPE} for ${TARGET_NAME}")
FOREACH(_CFG ${CMAKE_CONFIGURATION_TYPES})
STRING(TOUPPER ${_CFG} _CFG)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY_${_CFG} ${_TGT_DIR}
LIBRARY_OUTPUT_DIRECTORY_${_CFG} ${_TGT_DIR})
ENDFOREACH()
ENDIF()
ENDIF()
# Change target location (for running in build-tree without installing).
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${_TGT_DIR}"
LIBRARY_OUTPUT_DIRECTORY "${_TGT_DIR}")
IF(MSVC)
FOREACH(_CFG ${CMAKE_CONFIGURATION_TYPES})
STRING(TOUPPER ${_CFG} _CFG)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY_${_CFG} "${_TGT_DIR}"
LIBRARY_OUTPUT_DIRECTORY_${_CFG} "${_TGT_DIR}")
ENDFOREACH()
ENDIF(MSVC)
# No prefix for module and robot DLLs.
IF(${TARGET_TYPE} STREQUAL "MODULE" OR ${TARGET_TYPE} STREQUAL "ROBOT")
IF(UNIX OR MINGW)
SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES PREFIX "")

View File

@ -1,5 +1,7 @@
INCLUDE(../../cmake/macros.cmake)
SD_INSTALL_FILES(DATA data FILES credits.xml)
ADD_SUBDIRECTORY(fonts)
ADD_SUBDIRECTORY(icons)
ADD_SUBDIRECTORY(img)

View File

@ -83,7 +83,7 @@ static void* creditsPageCreate(int startChapterIndex, int startRecordIndex)
static char buf2[maxBufSize];
// Open and parse credits file
sprintf(buf, "%s%s", GfDataDir(), "credits.xml");
sprintf(buf, "%s%s", GfDataDir(), "data/credits.xml");
void* hparmCredits = GfParmReadFile(buf, GFPARM_RMODE_REREAD);
if (!hparmCredits)
return 0;