CMake install configuration

This is 99% for *nix based operating systems; it may work elsewhere but
it's not recommended.
This commit is contained in:
Tim Angus 2025-08-13 14:42:40 +01:00
parent 961a019a46
commit bbf549cc69
9 changed files with 25 additions and 5 deletions

View File

@ -132,11 +132,9 @@ For Emscripten,
see https://developer.chrome.com/blog/wasm-debugging-2020
Installation, for *nix
1. Set the COPYDIR variable in the shell to be where you installed Quake 3
to. By default it will be /usr/local/games/quake3 if you haven't set it.
This is the path as used by the original Linux Q3 installer and subsequent
point releases.
2. Run 'make copyfiles'.
1. Set the CMAKE_INSTALL_PREFIX to your prefered installation directory.
By default it will be set to /opt/quake3/.
2. ```cmake --install build```.
It is also possible to cross compile for Windows under *nix using MinGW. Your
distribution may have mingw32 packages available. On debian/Ubuntu, you need to

View File

@ -148,18 +148,21 @@ if(BUILD_GAME_LIBRARIES)
target_link_libraries( ${CGAME_MODULE_BINARY_BASEGAME} PRIVATE ${COMMON_LIBRARIES})
set_target_properties( ${CGAME_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${CGAME_MODULE_BINARY})
set_output_dirs( ${CGAME_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME})
install(TARGETS ${CGAME_MODULE_BINARY_BASEGAME} LIBRARY DESTINATION ${BASEGAME})
add_library( ${GAME_MODULE_BINARY_BASEGAME} SHARED ${GAME_SOURCES_BASEGAME} ${GAME_BINARY_SOURCES})
target_compile_definitions( ${GAME_MODULE_BINARY_BASEGAME} PRIVATE QAGAME)
target_link_libraries( ${GAME_MODULE_BINARY_BASEGAME} PRIVATE ${COMMON_LIBRARIES})
set_target_properties( ${GAME_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${GAME_MODULE_BINARY})
set_output_dirs( ${GAME_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME})
install(TARGETS ${GAME_MODULE_BINARY_BASEGAME} LIBRARY DESTINATION ${BASEGAME})
add_library( ${UI_MODULE_BINARY_BASEGAME} SHARED ${UI_SOURCES_BASEGAME} ${UI_BINARY_SOURCES})
target_compile_definitions( ${UI_MODULE_BINARY_BASEGAME} PRIVATE UI)
target_link_libraries( ${UI_MODULE_BINARY_BASEGAME} PRIVATE ${COMMON_LIBRARIES})
set_target_properties( ${UI_MODULE_BINARY_BASEGAME} PROPERTIES OUTPUT_NAME ${UI_MODULE_BINARY})
set_output_dirs( ${UI_MODULE_BINARY_BASEGAME} SUBDIRECTORY ${BASEGAME})
install(TARGETS ${UI_MODULE_BINARY_BASEGAME} LIBRARY DESTINATION ${BASEGAME})
endif()
if(BUILD_GAME_QVMS)

View File

@ -113,3 +113,7 @@ endforeach()
if(POST_CLIENT_CONFIGURE_FUNCTION)
cmake_language(CALL ${POST_CLIENT_CONFIGURE_FUNCTION})
endif()
install(TARGETS ${CLIENT_BINARY}
RUNTIME DESTINATION .
BUNDLE DESTINATION .)

View File

@ -16,3 +16,5 @@ add_compile_options(-Wall -Wimplicit
add_compile_options(-Wno-strict-aliasing
-Wno-format-zero-length -Wno-format-nonliteral)
set(CMAKE_INSTALL_PREFIX /opt/quake3)

View File

@ -36,18 +36,21 @@ if(BUILD_GAME_LIBRARIES)
target_link_libraries( ${CGAME_MODULE_BINARY_MISSIONPACK} PRIVATE ${COMMON_LIBRARIES})
set_target_properties( ${CGAME_MODULE_BINARY_MISSIONPACK} PROPERTIES OUTPUT_NAME ${CGAME_MODULE_BINARY})
set_output_dirs( ${CGAME_MODULE_BINARY_MISSIONPACK} SUBDIRECTORY ${MISSIONPACK})
install(TARGETS ${CGAME_MODULE_BINARY_MISSIONPACK} LIBRARY DESTINATION ${MISSIONPACK})
add_library( ${GAME_MODULE_BINARY_MISSIONPACK} SHARED ${GAME_SOURCES_MISSIONPACK} ${GAME_BINARY_SOURCES})
target_compile_definitions( ${GAME_MODULE_BINARY_MISSIONPACK} PRIVATE QAGAME MISSIONPACK)
target_link_libraries( ${GAME_MODULE_BINARY_MISSIONPACK} PRIVATE ${COMMON_LIBRARIES})
set_target_properties( ${GAME_MODULE_BINARY_MISSIONPACK} PROPERTIES OUTPUT_NAME ${GAME_MODULE_BINARY})
set_output_dirs( ${GAME_MODULE_BINARY_MISSIONPACK} SUBDIRECTORY ${MISSIONPACK})
install(TARGETS ${GAME_MODULE_BINARY_MISSIONPACK} LIBRARY DESTINATION ${MISSIONPACK})
add_library( ${UI_MODULE_BINARY_MISSIONPACK} SHARED ${UI_SOURCES_MISSIONPACK} ${UI_BINARY_SOURCES})
target_compile_definitions( ${UI_MODULE_BINARY_MISSIONPACK} PRIVATE UI MISSIONPACK)
target_link_libraries( ${UI_MODULE_BINARY_MISSIONPACK} PRIVATE ${COMMON_LIBRARIES})
set_target_properties( ${UI_MODULE_BINARY_MISSIONPACK} PROPERTIES OUTPUT_NAME ${UI_MODULE_BINARY})
set_output_dirs( ${UI_MODULE_BINARY_MISSIONPACK} SUBDIRECTORY ${MISSIONPACK})
install(TARGETS ${UI_MODULE_BINARY_MISSIONPACK} LIBRARY DESTINATION ${MISSIONPACK})
endif()
if(BUILD_GAME_QVMS)

View File

@ -59,4 +59,6 @@ if(USE_RENDERER_DLOPEN)
target_link_options( ${RENDERER_GL1_BINARY} PRIVATE ${RENDERER_LINK_OPTIONS})
set_output_dirs(${RENDERER_GL1_BINARY})
install(TARGETS ${RENDERER_GL1_BINARY} LIBRARY DESTINATION .)
endif()

View File

@ -91,4 +91,6 @@ if(USE_RENDERER_DLOPEN)
target_link_options( ${RENDERER_GL2_BINARY} PRIVATE ${RENDERER_LINK_OPTIONS})
set_output_dirs(${RENDERER_GL2_BINARY})
install(TARGETS ${RENDERER_GL2_BINARY} LIBRARY DESTINATION .)
endif()

View File

@ -52,3 +52,5 @@ set_output_dirs(${SERVER_BINARY})
if(POST_SERVER_CONFIGURE_FUNCTION)
cmake_language(CALL ${POST_SERVER_CONFIGURE_FUNCTION})
endif()
install(TARGETS ${SERVER_BINARY} RUNTIME DESTINATION .)

View File

@ -82,4 +82,8 @@ function(add_qvm MODULE_NAME)
string(REGEX REPLACE "[^A-Za-z0-9]" "_" TARGET_NAME ${MODULE_NAME})
add_custom_target(${TARGET_NAME} ALL DEPENDS ${QVM_FILE})
if(ARG_OUTPUT_DIRECTORY)
install(FILES ${QVM_FILE} DESTINATION ${ARG_OUTPUT_DIRECTORY})
endif()
endfunction()