cmake_minimum_required(VERSION 3.10) project(spine-c C CXX) set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 11) # Include the common flags (including -fno-rtti) include(${CMAKE_CURRENT_LIST_DIR}/../flags.cmake) # Include spine-cpp add_subdirectory(../spine-cpp ${CMAKE_CURRENT_BINARY_DIR}/spine-cpp) # Collect all source files file(GLOB SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c" "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp" ) file(GLOB GENERATED_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/generated/*.cpp" ) list(APPEND SOURCES ${GENERATED_SOURCES}) # Create the library add_library(spine-c STATIC ${SOURCES}) # Include directories target_include_directories(spine-c PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}/src ) # Link with spine-cpp target_link_libraries(spine-c PUBLIC spine-cpp) # Add spine-cpp include directories target_include_directories(spine-c PUBLIC ../spine-cpp/spine-cpp/include ) # Export compile commands for better IDE support set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Create test executable only if this is the top-level project if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) add_executable(spine-c-test test/test.c) target_link_libraries(spine-c-test spine-c) target_include_directories(spine-c-test PRIVATE include) endif()