Add cmake install commands

This commit is contained in:
2025-11-10 22:58:37 +10:00
parent 7c1612be63
commit caf8bd6b05
4 changed files with 64 additions and 3 deletions

View File

@@ -19,6 +19,7 @@ endif()
set(NOVA_SANITIZERS "" CACHE STRING "Sanitizers to enable (address, undefined, leak)") set(NOVA_SANITIZERS "" CACHE STRING "Sanitizers to enable (address, undefined, leak)")
set(NOVA_WERROR OFF CACHE BOOL "Treat compiler warnings as errors") set(NOVA_WERROR OFF CACHE BOOL "Treat compiler warnings as errors")
set(NOVA_ENABLE_INSTALL ON CACHE BOOL "Enable installation targets")
add_compile_definitions( add_compile_definitions(
NOVA_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} NOVA_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
@@ -87,5 +88,10 @@ else()
message(FATAL_ERROR "Unsupported platform") message(FATAL_ERROR "Unsupported platform")
endif() endif()
if (NOVA_ENABLE_INSTALL)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
endif()
add_subdirectory(engine) add_subdirectory(engine)
add_subdirectory(editor) add_subdirectory(editor)

View File

@@ -15,5 +15,7 @@ target_include_directories(nova-editor
) )
target_link_libraries(nova-editor target_link_libraries(nova-editor
PUBLIC nova PUBLIC nova::nova
) )
# TODO: Install nova-editor

View File

@@ -10,10 +10,58 @@ list(TRANSFORM NOVA_ENGINE_SRC PREPEND ${CMAKE_CURRENT_SOURCE_DIR}/src/)
add_library(nova SHARED ${NOVA_ENGINE_SRC}) add_library(nova SHARED ${NOVA_ENGINE_SRC})
target_include_directories(nova target_include_directories(nova
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include PUBLIC
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
) )
set_target_properties(nova PROPERTIES set_target_properties(nova PROPERTIES
DEFINE_SYMBOL NOVA_EXPORT_SYMBOLS DEFINE_SYMBOL NOVA_EXPORT_SYMBOLS
) )
add_library(nova::nova ALIAS nova)
if (NOVA_ENABLE_INSTALL)
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/nova-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/nova-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/nova
)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/nova-config-version.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)
install(
TARGETS nova
EXPORT nova-targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/nova
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
FILES_MATCHING PATTERN "*.hpp"
)
install(
EXPORT nova-targets
FILE nova-targets.cmake
NAMESPACE nova::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/nova
)
install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/nova-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/nova-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/nova
)
endif()

View File

@@ -0,0 +1,5 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/nova-targets.cmake")
check_required_components(nova)