cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(ecs-lua LANGUAGES CXX ) include(../cmake/CPM.cmake) CPMAddPackage( NAME PackageProject.cmake GITHUB_REPOSITORY TheLartians/PackageProject.cmake VERSION 1.3 ) CPMAddPackage( NAME lua GITHUB_REPOSITORY lua/lua VERSION 5.3.5 DOWNLOAD_ONLY YES ) if (lua_ADDED) # lua has no CMake support, so we create our own target FILE(GLOB lua_sources ${lua_SOURCE_DIR}/*.c) add_library(lua STATIC ${lua_sources}) target_include_directories(lua PUBLIC $ ) endif() CPMAddPackage( NAME sol2 GIT_REPOSITORY https://github.com/ThePhD/sol2 VERSION 3.2.1 DOWNLOAD_ONLY YES ) if (sol2_ADDED) add_library(sol2 INTERFACE IMPORTED) target_include_directories(sol2 INTERFACE ${sol2_SOURCE_DIR}/single/include) target_link_libraries(sol2 INTERFACE lua) endif() file(GLOB_RECURSE headers CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h") file(GLOB_RECURSE sources CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp) add_library(${PROJECT_NAME} ${headers} ${sources}) # being a cross-platform target, we enforce standards conformance on MSVC target_compile_options(${PROJECT_NAME} PUBLIC "$<$:/permissive->") # Link dependencies (if required) target_link_libraries(${PROJECT_NAME} PUBLIC ecs ecs-serial lua sol2) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20 OUTPUT_NAME "${PROJECT_NAME}" ) string(TOLOWER ${PROJECT_NAME}/version.h VERSION_HEADER_LOCATION) target_include_directories(${PROJECT_NAME} PUBLIC $ $ )