From 7cc70002134da5a9140c9e1c7a3ca6698c3e076c Mon Sep 17 00:00:00 2001 From: Martin Gerhardy Date: Thu, 11 Jan 2018 06:44:50 +0100 Subject: [PATCH] CMAKE: don't install every target --- cmake/macros.cmake | 53 ++++++++++++++-------- contrib/installer/linux/desktop.in | 8 ++-- src/tests/testcamera/CMakeLists.txt | 2 +- src/tests/testdepthbuffer/CMakeLists.txt | 2 +- src/tests/testimgui/CMakeLists.txt | 2 +- src/tests/testluaui/CMakeLists.txt | 2 +- src/tests/testmesh/CMakeLists.txt | 2 +- src/tests/testnuklear/CMakeLists.txt | 2 +- src/tests/testoctree/CMakeLists.txt | 2 +- src/tests/testoctreevisit/CMakeLists.txt | 2 +- src/tests/testplane/CMakeLists.txt | 2 +- src/tests/testshapebuilder/CMakeLists.txt | 2 +- src/tests/testtemplate/CMakeLists.txt | 2 +- src/tests/testtexture/CMakeLists.txt | 2 +- src/tests/testvoxelfont/CMakeLists.txt | 2 +- src/tools/computeshadertool/CMakeLists.txt | 2 +- src/tools/databasetool/CMakeLists.txt | 2 +- src/tools/shadertool/CMakeLists.txt | 2 +- src/tools/uitool/CMakeLists.txt | 2 +- 19 files changed, 54 insertions(+), 41 deletions(-) diff --git a/cmake/macros.cmake b/cmake/macros.cmake index b7dcbc15b..1a8940229 100644 --- a/cmake/macros.cmake +++ b/cmake/macros.cmake @@ -474,14 +474,24 @@ endmacro() # # Example: engine_add_executable(TARGET SomeTargetName SRCS Source.cpp Main.cpp WINDOWED) # +# TARGET: the target name (binary name) +# SRCS: the source files for this target +# WINDOWED: this is needed to indicate whether the application should e.g. spawn a console on windows +# NOINSTALL: means that the binary and data files are not put into the final installation folder +# this can e.g. be useful for stuff like code generators that are only needed during build +# time. +# macro(engine_add_executable) - set(_OPTIONS_ARGS WINDOWED) + set(_OPTIONS_ARGS WINDOWED NOINSTALL) set(_ONE_VALUE_ARGS TARGET) set(_MULTI_VALUE_ARGS SRCS) cmake_parse_arguments(_EXE "${_OPTIONS_ARGS}" "${_ONE_VALUE_ARGS}" "${_MULTI_VALUE_ARGS}" ${ARGN} ) + set(_EXE_CATEGORIES "Game") + if (_EXE_WINDOWED) + set(_EXE_TERMINAL "false") if (WINDOWS) add_executable(${_EXE_TARGET} WIN32 ${_EXE_SRCS}) if (MSVC) @@ -491,6 +501,7 @@ macro(engine_add_executable) add_executable(${_EXE_TARGET} ${_EXE_SRCS}) endif() else() + set(_EXE_TERMINAL "true") add_executable(${_EXE_TARGET} ${_EXE_SRCS}) if (WINDOWS) if (MSVC) @@ -514,26 +525,28 @@ macro(engine_add_executable) set_target_properties(${_EXE_TARGET} PROPERTIES LINK_FLAGS "${SANITIZE_THREAD_FLAG}") endif() - 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}) + if (NOT _EXE_NOINSTALL) + 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() - endforeach() - install(TARGETS ${_EXE_TARGET} DESTINATION ${BIN_DIR} COMPONENT ${_EXE_TARGET}) + + 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() + + 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}) + endif() endmacro() macro(engine_target_link_libraries) diff --git a/contrib/installer/linux/desktop.in b/contrib/installer/linux/desktop.in index 293204d85..60f3cd83c 100644 --- a/contrib/installer/linux/desktop.in +++ b/contrib/installer/linux/desktop.in @@ -1,11 +1,11 @@ [Desktop Entry] Version=1.0 -Name=@_EXE_TARGET@ @VERSION@ +Name=@_EXE_TARGET@ @CMAKE_PROJECT_VERSION@ GenericName=@_EXE_TARGET@ Comment=@DESCRIPTION@ Exec=@_EXE_TARGET@ -Icon=@_EXE_TARGET@ -Terminal=false +Icon=@ICON@ +Terminal=@_EXE_TERMINAL@ Type=Application -Categories=Game; +Categories=@_EXE_CATEGORIES@ StartupNotify=true diff --git a/src/tests/testcamera/CMakeLists.txt b/src/tests/testcamera/CMakeLists.txt index 7cf544c5c..ce9a5a086 100644 --- a/src/tests/testcamera/CMakeLists.txt +++ b/src/tests/testcamera/CMakeLists.txt @@ -3,5 +3,5 @@ set(SRCS FrustumEntity.h TestCamera.h TestCamera.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore) diff --git a/src/tests/testdepthbuffer/CMakeLists.txt b/src/tests/testdepthbuffer/CMakeLists.txt index 8fc7c3b0b..dd36241e4 100644 --- a/src/tests/testdepthbuffer/CMakeLists.txt +++ b/src/tests/testdepthbuffer/CMakeLists.txt @@ -2,5 +2,5 @@ project(testdepthbuffer) set(SRCS TestDepthBuffer.h TestDepthBuffer.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore) diff --git a/src/tests/testimgui/CMakeLists.txt b/src/tests/testimgui/CMakeLists.txt index 516fd3b68..642478f61 100644 --- a/src/tests/testimgui/CMakeLists.txt +++ b/src/tests/testimgui/CMakeLists.txt @@ -4,5 +4,5 @@ set(SRCS Demo.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES imgui) diff --git a/src/tests/testluaui/CMakeLists.txt b/src/tests/testluaui/CMakeLists.txt index d4075c53f..508dc2651 100644 --- a/src/tests/testluaui/CMakeLists.txt +++ b/src/tests/testluaui/CMakeLists.txt @@ -2,6 +2,6 @@ project(testluaui) set(SRCS TestLUAUI.h TestLUAUI.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES nuklear) check_lua_files(${PROJECT_NAME} ui/${PROJECT_NAME}.lua) diff --git a/src/tests/testmesh/CMakeLists.txt b/src/tests/testmesh/CMakeLists.txt index a7cf59014..297bea30c 100644 --- a/src/tests/testmesh/CMakeLists.txt +++ b/src/tests/testmesh/CMakeLists.txt @@ -2,5 +2,5 @@ project(testmesh) set(SRCS TestMesh.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore) diff --git a/src/tests/testnuklear/CMakeLists.txt b/src/tests/testnuklear/CMakeLists.txt index 61d6673d6..db6e17e1a 100644 --- a/src/tests/testnuklear/CMakeLists.txt +++ b/src/tests/testnuklear/CMakeLists.txt @@ -2,5 +2,5 @@ project(testnuklear) set(SRCS TestNuklear.h TestNuklear.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES nuklear) diff --git a/src/tests/testoctree/CMakeLists.txt b/src/tests/testoctree/CMakeLists.txt index cb75b49c2..dbf69e1a5 100644 --- a/src/tests/testoctree/CMakeLists.txt +++ b/src/tests/testoctree/CMakeLists.txt @@ -2,5 +2,5 @@ project(testoctree) set(SRCS TestOctree.h TestOctree.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore frontend) diff --git a/src/tests/testoctreevisit/CMakeLists.txt b/src/tests/testoctreevisit/CMakeLists.txt index a3494a35d..f2d83580b 100644 --- a/src/tests/testoctreevisit/CMakeLists.txt +++ b/src/tests/testoctreevisit/CMakeLists.txt @@ -2,5 +2,5 @@ project(testoctreevisit) set(SRCS TestOctreeVisit.h TestOctreeVisit.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore frontend) diff --git a/src/tests/testplane/CMakeLists.txt b/src/tests/testplane/CMakeLists.txt index 8fcddf478..7cf47cdf2 100644 --- a/src/tests/testplane/CMakeLists.txt +++ b/src/tests/testplane/CMakeLists.txt @@ -2,5 +2,5 @@ project(testplane) set(SRCS TestPlane.h TestPlane.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore) diff --git a/src/tests/testshapebuilder/CMakeLists.txt b/src/tests/testshapebuilder/CMakeLists.txt index fa6b6cecd..765862d17 100644 --- a/src/tests/testshapebuilder/CMakeLists.txt +++ b/src/tests/testshapebuilder/CMakeLists.txt @@ -2,6 +2,6 @@ project(testshapebuilder) set(SRCS TestShapeBuilder.h TestShapeBuilder.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore frontend imgui) #generate_shaders(${PROJECT_NAME} color) diff --git a/src/tests/testtemplate/CMakeLists.txt b/src/tests/testtemplate/CMakeLists.txt index c0e89d3b5..2c8ab6fc4 100644 --- a/src/tests/testtemplate/CMakeLists.txt +++ b/src/tests/testtemplate/CMakeLists.txt @@ -2,6 +2,6 @@ project(testtemplate) set(SRCS TestTemplate.h TestTemplate.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore imgui) #generate_shaders(${PROJECT_NAME} color) diff --git a/src/tests/testtexture/CMakeLists.txt b/src/tests/testtexture/CMakeLists.txt index 23a189fe3..65c2c6e53 100644 --- a/src/tests/testtexture/CMakeLists.txt +++ b/src/tests/testtexture/CMakeLists.txt @@ -2,5 +2,5 @@ project(testtexture) set(SRCS TestTexture.h TestTexture.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore) diff --git a/src/tests/testvoxelfont/CMakeLists.txt b/src/tests/testvoxelfont/CMakeLists.txt index e9677b357..fa4ec48f8 100644 --- a/src/tests/testvoxelfont/CMakeLists.txt +++ b/src/tests/testvoxelfont/CMakeLists.txt @@ -2,5 +2,5 @@ project(testvoxelfont) set(SRCS TestVoxelFont.h TestVoxelFont.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} WINDOWED NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES testcore) diff --git a/src/tools/computeshadertool/CMakeLists.txt b/src/tools/computeshadertool/CMakeLists.txt index bb812e50a..37bb2c3b2 100644 --- a/src/tools/computeshadertool/CMakeLists.txt +++ b/src/tools/computeshadertool/CMakeLists.txt @@ -11,7 +11,7 @@ set(SRCS ${SHARED_SRCS} ComputeShaderTool.h ComputeShaderTool.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS}) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES compute simplecpp) set(TEST_SRCS diff --git a/src/tools/databasetool/CMakeLists.txt b/src/tools/databasetool/CMakeLists.txt index af934ebe5..78b25c0aa 100644 --- a/src/tools/databasetool/CMakeLists.txt +++ b/src/tools/databasetool/CMakeLists.txt @@ -8,5 +8,5 @@ set(SRCS Table.h ../../modules/persistence/FieldType.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS}) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES core) diff --git a/src/tools/shadertool/CMakeLists.txt b/src/tools/shadertool/CMakeLists.txt index 97488edba..a5180ae07 100644 --- a/src/tools/shadertool/CMakeLists.txt +++ b/src/tools/shadertool/CMakeLists.txt @@ -12,7 +12,7 @@ set(SRCS ShaderTool.h ShaderTool.cpp ${SHARED_SRCS} ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS}) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL) add_dependencies(${PROJECT_NAME} glslangValidator) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES video simplecpp) diff --git a/src/tools/uitool/CMakeLists.txt b/src/tools/uitool/CMakeLists.txt index ea751b4cb..0c7416b27 100644 --- a/src/tools/uitool/CMakeLists.txt +++ b/src/tools/uitool/CMakeLists.txt @@ -2,5 +2,5 @@ project(uitool) set(SRCS UITool.h UITool.cpp ) -engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS}) +engine_add_executable(TARGET ${PROJECT_NAME} SRCS ${SRCS} NOINSTALL) engine_target_link_libraries(TARGET ${PROJECT_NAME} DEPENDENCIES turbobadger)