CMakeLists.txt 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. cmake_minimum_required(VERSION 3.10)
  2. project(spine-sdl)
  3. # Default flags
  4. include(${CMAKE_SOURCE_DIR}/../flags.cmake)
  5. # Add spine-cpp and spine-c
  6. add_subdirectory(${CMAKE_SOURCE_DIR}/../spine-cpp ${CMAKE_BINARY_DIR}/spine-cpp-build)
  7. add_subdirectory(${CMAKE_SOURCE_DIR}/../spine-c ${CMAKE_BINARY_DIR}/spine-c)
  8. # SDL
  9. include(FetchContent)
  10. FetchContent_Declare(SDL GIT_REPOSITORY https://github.com/libsdl-org/SDL GIT_TAG release-2.30.2)
  11. set(FETCHCONTENT_QUIET NO)
  12. set(SDL_SHARED OFF)
  13. set(SDL_STATIC ON)
  14. set(SDL_TEST OFF)
  15. set(SDL_EXAMPLES OFF)
  16. set(SDL_INSTALL OFF)
  17. set(SDL_TESTS OFF)
  18. set(SDL_TESTS_BUILD OFF)
  19. set(SDL_TESTS_BUILD_C OFF)
  20. set(SDL_TESTS_BUILD_CPP OFF)
  21. set(SDL_TESTS_BUILD_JOYSTICK OFF)
  22. set(SDL_TESTS_BUILD_RENDERER OFF)
  23. FetchContent_MakeAvailable(SDL)
  24. include_directories(src)
  25. # spine-sdl-c library
  26. add_library(spine-sdl-c STATIC src/spine-sdl-c.c src/spine-sdl-c.h src/stb_image.h)
  27. target_link_libraries(spine-sdl-c LINK_PUBLIC SDL2-static spine-c)
  28. install(TARGETS spine-sdl-c DESTINATION dist/lib)
  29. install(FILES src/spine-sdl-c.h src/stb_image.h DESTINATION dist/include)
  30. # spine-sdl-cpp library
  31. add_library(spine-sdl-cpp STATIC src/spine-sdl-cpp.cpp src/spine-sdl-cpp.h src/stb_image.h)
  32. target_link_libraries(spine-sdl-cpp LINK_PUBLIC SDL2-static spine-cpp)
  33. install(TARGETS spine-sdl-cpp DESTINATION dist/lib)
  34. install(FILES src/spine-sdl-cpp.h src/stb_image.h DESTINATION dist/include)
  35. # Example (spine-sdl-c)
  36. add_executable(spine-sdl-c-example example/main.c)
  37. target_link_libraries(spine-sdl-c-example SDL2-static spine-sdl-c)
  38. set_property(TARGET spine-sdl-c-example PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-sdl")
  39. # Example (spine-sdl-cpp)
  40. add_executable(spine-sdl-cpp-example example/main.cpp)
  41. target_link_libraries(spine-sdl-cpp-example SDL2-static spine-sdl-cpp)
  42. set_property(TARGET spine-sdl-cpp-example PROPERTY VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/spine-sdl")
  43. # copy data to build directory
  44. add_custom_command(TARGET spine-sdl-c-example PRE_BUILD
  45. COMMAND ${CMAKE_COMMAND} -E copy_directory
  46. ${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-sdl-c-example>/data)
  47. add_custom_command(TARGET spine-sdl-cpp-example PRE_BUILD
  48. COMMAND ${CMAKE_COMMAND} -E copy_directory
  49. ${CMAKE_CURRENT_LIST_DIR}/data $<TARGET_FILE_DIR:spine-sdl-cpp-example>/data)
  50. if(APPLE)
  51. # Create the entitlements file in build directory
  52. file(WRITE ${CMAKE_BINARY_DIR}/debug.entitlements
  53. "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
  54. <!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
  55. <plist version=\"1.0\">
  56. <dict>
  57. <key>com.apple.security.get-task-allow</key>
  58. <true/>
  59. </dict>
  60. </plist>")
  61. # Sign the executables
  62. add_custom_command(TARGET spine-sdl-cpp-example POST_BUILD
  63. COMMAND codesign --force --sign - --entitlements ${CMAKE_BINARY_DIR}/debug.entitlements $<TARGET_FILE:spine-sdl-cpp-example>
  64. COMMENT "Signing target with entitlements for Instruments"
  65. )
  66. add_custom_command(TARGET spine-sdl-c-example POST_BUILD
  67. COMMAND codesign --force --sign - --entitlements ${CMAKE_BINARY_DIR}/debug.entitlements $<TARGET_FILE:spine-sdl-c-example>
  68. COMMENT "Signing target with entitlements for Instruments"
  69. )
  70. endif()