72 lines
1.8 KiB
CMake
72 lines
1.8 KiB
CMake
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})
|
|
set_source_files_properties(${lua_sources} PROPERTIES LANGUAGE CXX)
|
|
|
|
target_include_directories(lua
|
|
PUBLIC
|
|
$<BUILD_INTERFACE:${lua_SOURCE_DIR}>
|
|
)
|
|
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)
|
|
target_compile_definitions(sol2 INTERFACE SOL_USING_CXX_LUA=1)
|
|
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 "$<$<BOOL:${MSVC}>:/permissive->")
|
|
|
|
# Link dependencies (if required)
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC ecs ecs-serial 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
|
|
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
|
|
$<INSTALL_INTERFACE:include/${PROJECT_NAME}-${PROJECT_VERSION}>
|
|
)
|