Add cmake install commands
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
5
engine/cmake/nova-config.cmake.in
Normal file
5
engine/cmake/nova-config.cmake.in
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
|
||||||
|
include("${CMAKE_CURRENT_LIST_DIR}/nova-targets.cmake")
|
||||||
|
|
||||||
|
check_required_components(nova)
|
||||||
Reference in New Issue
Block a user