CMAKE: added install targets

this fixes the issue with one application overwriting the data files for another application

still w.i.p.
master
mgerhardy 2016-05-04 20:42:38 +02:00
parent 77c71af1f8
commit fa296bb1b8
5 changed files with 83 additions and 2 deletions

View File

@ -5,6 +5,8 @@ set(SCRIPTS_CMAKE_DIR ${PROJECT_SOURCE_DIR}/cmake)
include(${SCRIPTS_CMAKE_DIR}/common.cmake)
include(${SCRIPTS_CMAKE_DIR}/macros.cmake)
include(${SCRIPTS_CMAKE_DIR}/pack.cmake)
include(CPack)
option(UNITTESTS "Builds with tests" ON)
option(UNITTESTS_SANITIZER_THREADS "Builds tests with thread sanitizer" OFF)

View File

@ -11,10 +11,10 @@ all: build
.PHONY: build
build:
$(Q)mkdir -p $(BUILDDIR); cd $(BUILDDIR); cmake -G"Eclipse CDT4 - Unix Makefiles" ..; make $(JOB_FLAG)
$(Q)mkdir -p $(BUILDDIR); cd $(BUILDDIR); cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_INSTALL_PREFIX=./linux ..; make $(JOB_FLAG); make install
release:
$(Q)mkdir -p $(BUILDDIR); cd $(BUILDDIR); cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ..; make $(JOB_FLAG)
$(Q)mkdir -p $(BUILDDIR); cd $(BUILDDIR); cmake -G"Eclipse CDT4 - Unix Makefiles" -DCMAKE_INSTALL_PREFIX=./linux -DCMAKE_BUILD_TYPE=Release ..; make $(JOB_FLAG); make install
clean:
$(Q)rm -rf $(BUILDDIR)

View File

@ -308,4 +308,35 @@ macro(engine_add_executable)
endif()
endif()
endif()
set(RESOURCE_DIRS ${ROOT_DIR}/data/${_EXE_TARGET} ${ROOT_DIR}/data/shared)
# by default, put system related files into the current binary dir on install
set(SHARE_DIR ".")
# by default, put data files into the current binary dir on install
set(GAMES_DIR "${_EXE_TARGET}")
# by default, put the binary into a subdir with the target name
set(BIN_DIR "${_EXE_TARGET}")
set(ICON_DIR ".")
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(SHARE_DIR "share")
set(GAMES_DIR "${SHARE_DIR}/${_EXE_TARGET}")
set(ICON_DIR "${SHARE_DIR}/icons")
set(BIN_DIR "games")
configure_file(${ROOT_DIR}/contrib/installer/linux/desktop.in ${PROJECT_BINARY_DIR}/${_EXE_TARGET}.desktop)
install(FILES ${PROJECT_BINARY_DIR}/${_EXE_TARGET}.desktop DESTINATION ${SHARE_DIR}/applications)
endif()
set(ICON "${_EXE_TARGET}-icon.png")
if (EXISTS ${ROOT_DIR}/contrib/${ICON})
install(FILES ${ROOT_DIR}/contrib/${ICON} DESTINATION ${ICON_DIR} COMPONENT ${_EXE_TARGET})
endif()
foreach (dir ${RESOURCE_DIRS})
if (IS_DIRECTORY ${dir})
install(DIRECTORY ${dir} DESTINATION ${GAMES_DIR}/ COMPONENT ${_EXE_TARGET})
endif()
endforeach()
install(TARGETS ${_EXE_TARGET} DESTINATION ${BIN_DIR} COMPONENT ${_EXE_TARGET})
endmacro()

37
cmake/pack.cmake Normal file
View File

@ -0,0 +1,37 @@
set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
#set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE ON)
set(CPACK_PACKAGE_VENDOR "FooBar")
set(CPACK_PACKAGE_CONTACT "http://www.foobar.de")
#set(CPACK_RESOURCE_FILE_LICENSE ${ROOT_DIR}/LICENSE)
set(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME})
set(CPACK_SOURCE_IGNORE_FILES "~$")
if (UNIX)
set(CPACK_GENERATOR "TGZ;TBZ2")
find_host_program(RPMBUILD rpmbuild)
if (RPMBUILD)
list(APPEND CPACK_GENERATOR RPM)
set(CPACK_RPM_COMPONENT_INSTALL ON)
set(CPACK_RPM_PACKAGE_LICENSE GPL)
set(CPACK_RPM_PACKAGE_REQUIRES)
endif()
find_host_program(DPKG dpkg)
if (DPKG)
list(APPEND CPACK_GENERATOR DEB)
set(CPACK_DEB_COMPONENT_INSTALL ON)
set(CPACK_DEBIAN_PACKAGE_SECTION games)
set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_VENDOR})
endif()
find_host_program(NSIS nsisbuild)
if (NSIS)
list(APPEND CPACK_GENERATOR NSIS)
set(CPACK_NSIS_COMPRESSOR bzip2)
set(CPACK_NSIS_URL_INFO_ABOUT ${CPACK_PACKAGE_CONTACT})
endif()
set(CPACK_SOURCE_GENERATOR "TGZ")
elseif (WINDOWS)
set(CPACK_GENERATOR "NSIS")
set(CPACK_SOURCE_GENERATOR "ZIP")
set(CPACK_NSIS_COMPRESSOR bzip2)
set(CPACK_NSIS_URL_INFO_ABOUT ${CPACK_PACKAGE_CONTACT})
endif()

View File

@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Name=@_EXE_TARGET@ @VERSION@
GenericName=@_EXE_TARGET@
Comment=@DESCRIPTION@
Exec=@_EXE_TARGET@
Icon=@_EXE_TARGET@
Terminal=false
Type=Application
Categories=Game;
StartupNotify=true