Make desktop core dependencies portable

This commit is contained in:
2026-08-15 13:01:11 +02:00
parent d869edfaa8
commit 925869d2f4
4 changed files with 104 additions and 84 deletions
+71 -33
View File
@@ -4,11 +4,47 @@ project(vectorail-core VERSION 0.1.0 LANGUAGES CXX)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
include(FetchContent)
find_package(OpenGL REQUIRED)
find_package(PNG REQUIRED)
find_package(SDL3 CONFIG REQUIRED)
find_package(glm CONFIG REQUIRED)
set(VECTORAIL_CORE_FETCHED_DEPENDENCIES OFF)
find_package(SDL3 CONFIG QUIET)
if(NOT TARGET SDL3::SDL3)
set(SDL_INSTALL OFF CACHE BOOL "" FORCE)
FetchContent_Declare(SDL3
GIT_REPOSITORY https://github.com/libsdl-org/SDL.git
GIT_TAG main
)
FetchContent_MakeAvailable(SDL3)
set(VECTORAIL_CORE_FETCHED_DEPENDENCIES ON)
endif()
find_package(glm CONFIG QUIET)
if(NOT TARGET glm::glm)
FetchContent_Declare(glm
GIT_REPOSITORY https://github.com/g-truc/glm.git
GIT_TAG master
)
FetchContent_MakeAvailable(glm)
set(VECTORAIL_CORE_FETCHED_DEPENDENCIES ON)
endif()
FetchContent_Declare(stb
GIT_REPOSITORY https://github.com/nothings/stb.git
GIT_TAG 2c980bb59875b0d32144a71867fbdebb2f77cd20
)
FetchContent_MakeAvailable(stb)
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR AND
NOT VECTORAIL_CORE_FETCHED_DEPENDENCIES)
set(VECTORAIL_CORE_INSTALL_DEFAULT ON)
else()
set(VECTORAIL_CORE_INSTALL_DEFAULT OFF)
endif()
option(VECTORAIL_CORE_INSTALL "Generate VectorailCore install rules"
${VECTORAIL_CORE_INSTALL_DEFAULT})
add_library(vectorail-core
src/DdsTexture.cpp
@@ -24,12 +60,13 @@ target_include_directories(vectorail-core
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${stb_SOURCE_DIR}
)
target_link_libraries(vectorail-core
PUBLIC
SDL3::SDL3
OpenGL::GL
PNG::PNG
glm::glm
)
@@ -39,33 +76,34 @@ set_target_properties(vectorail-core PROPERTIES
SOVERSION ${PROJECT_VERSION_MAJOR}
)
install(TARGETS vectorail-core
EXPORT VectorailCoreTargets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT VectorailCoreTargets
FILE VectorailCoreTargets.cmake
NAMESPACE Vectorail::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
configure_package_config_file(
cmake/VectorailCoreConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
if(VECTORAIL_CORE_INSTALL)
install(TARGETS vectorail-core
EXPORT VectorailCoreTargets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(EXPORT VectorailCoreTargets
FILE VectorailCoreTargets.cmake
NAMESPACE Vectorail::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
configure_package_config_file(
cmake/VectorailCoreConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfig.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/VectorailCoreConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/VectorailCore
)
endif()