CMakeLists.txt 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. cmake_minimum_required(VERSION 3.21)
  2. set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
  3. set(X_VCPKG_APPLOCAL_DEPS_INSTALL ON)
  4. project(lincity-ng
  5. VERSION 2.10.2
  6. LANGUAGES CXX
  7. DESCRIPTION "A city simulation game"
  8. HOMEPAGE_URL "https://github.com/lincity-ng/lincity-ng"
  9. )
  10. list(APPEND CMAKE_MODULE_PATH
  11. ${CMAKE_SOURCE_DIR}/mk/cmake/modules
  12. ${CMAKE_SOURCE_DIR}/mk/cmake/modules/SDL2
  13. )
  14. include(CheckIncludeFiles)
  15. include(GNUInstallDirs)
  16. include(GetGitRevisionDescription)
  17. set(CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard")
  18. set(CMAKE_CXX_STANDARD_REQUIRED ON)
  19. set(CMAKE_CXX_EXTENSIONS OFF)
  20. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
  21. find_package(Threads)
  22. find_package(ZLIB REQUIRED)
  23. find_package(SDL2 REQUIRED)
  24. find_package(SDL2_gfx REQUIRED)
  25. find_package(SDL2_image REQUIRED)
  26. find_package(SDL2_mixer REQUIRED)
  27. find_package(SDL2_ttf REQUIRED)
  28. find_package(LibXml2 REQUIRED)
  29. find_package(PhysFS MODULE REQUIRED) # config seems broken, so use module
  30. find_package(LibXslt REQUIRED)
  31. git_describe_working_tree(GIT_TAG_VERSION --match lincity-ng-*)
  32. if(GIT_TAG_VERSION)
  33. string(SUBSTRING ${GIT_TAG_VERSION} 11 -1 GIT_TAG_VERSION)
  34. else()
  35. set(GIT_TAG_VERSION ${PROJECT_VERSION}-unknown)
  36. endif()
  37. check_include_files(dirent.h HAVE_DIRENT_H)
  38. set(CMAKE_INSTALL_APPDATADIR ${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME})
  39. set(CMAKE_INSTALL_FULL_APPDATADIR ${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME})
  40. set(CMAKE_BINARY_BINDIR ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
  41. set(CMAKE_BINARY_DATADIR ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR})
  42. set(CMAKE_BINARY_APPDATADIR ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_APPDATADIR})
  43. add_compile_definitions($<$<CONFIG:Debug>:DEBUG>)
  44. add_subdirectory(src)
  45. add_subdirectory(data ${CMAKE_INSTALL_APPDATADIR})
  46. add_subdirectory(doc)
  47. set_target_properties(lincity-ng PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_BINDIR})
  48. install(TARGETS lincity-ng RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
  49. if (WIN32)
  50. install(FILES $<TARGET_PDB_FILE:lincity-ng> DESTINATION . OPTIONAL)
  51. endif()
  52. set(CPACK_GENERATOR TGZ ZIP)
  53. set(CPACK_PACKAGE_ICON data/lincity-ng.png)
  54. set(CPACK_PACKAGE_CHECKSUM SHA256)
  55. set(CPACK_RESOURCE_FILE_README README.md)
  56. set(CPACK_SOURCE_GENERATOR TGZ)
  57. set(CPACK_SOURCE_IGNORE_FILES ${CMAKE_BINARY_DIR}/ ${CMAKE_SOURCE_DIR}/\\\\.git/ ${CMAKE_SOURCE_DIR}/build.*/)
  58. include(CPack)