mirror of
https://github.com/albertodemichelis/squirrel.git
synced 2026-01-10 21:48:39 +01:00
Create package export file
The package export file allows CMake consumers to find Squirrel by calling find_package(squirrel). This will create imported targets for them to link against. Create export files in both the build directory and the install directory.
This commit is contained in:
@ -72,3 +72,38 @@ if(NOT SQ_DISABLE_INSTALLER AND NOT SQ_DISABLE_HEADER_INSTALLER)
|
||||
COMPONENT Development
|
||||
)
|
||||
endif()
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config-version.cmake"
|
||||
VERSION "${squirrel_VERSION}"
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/squirrel-config.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config.cmake"
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/squirrel"
|
||||
)
|
||||
|
||||
export(EXPORT squirrel
|
||||
NAMESPACE squirrel::
|
||||
FILE "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-targets.cmake"
|
||||
)
|
||||
|
||||
if(NOT SQ_DISABLE_INSTALLER AND NOT SQ_DISABLE_CMAKE_INSTALLER)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config-version.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/squirrel/squirrel-config.cmake"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/squirrel"
|
||||
COMPONENT Development
|
||||
)
|
||||
|
||||
install(EXPORT squirrel
|
||||
NAMESPACE squirrel::
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/squirrel"
|
||||
FILE "squirrel-targets.cmake"
|
||||
COMPONENT Development
|
||||
)
|
||||
endif()
|
||||
|
||||
@ -2,7 +2,7 @@ set(CMAKE_C_STANDARD 99)
|
||||
if(NOT DISABLE_DYNAMIC)
|
||||
add_executable(sq sq.c)
|
||||
add_executable(squirrel::interpreter ALIAS sq)
|
||||
set_target_properties(sq PROPERTIES LINKER_LANGUAGE C)
|
||||
set_target_properties(sq PROPERTIES LINKER_LANGUAGE C EXPORT_NAME interpreter)
|
||||
target_link_libraries(sq squirrel sqstdlib)
|
||||
if(NOT SQ_DISABLE_INSTALLER)
|
||||
install(TARGETS sq EXPORT squirrel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime)
|
||||
@ -16,7 +16,7 @@ endif()
|
||||
if(NOT DISABLE_STATIC)
|
||||
add_executable(sq_static sq.c)
|
||||
add_executable(squirrel::interpreter_static ALIAS sq)
|
||||
set_target_properties(sq_static PROPERTIES LINKER_LANGUAGE C)
|
||||
set_target_properties(sq_static PROPERTIES LINKER_LANGUAGE C EXPORT_NAME interpreter_static)
|
||||
target_link_libraries(sq_static squirrel_static sqstdlib_static)
|
||||
if(NOT SQ_DISABLE_INSTALLER)
|
||||
install(TARGETS sq_static EXPORT squirrel RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime)
|
||||
|
||||
@ -10,6 +10,7 @@ set(SQSTDLIB_SRC sqstdaux.cpp
|
||||
if(NOT DISABLE_DYNAMIC)
|
||||
add_library(sqstdlib SHARED ${SQSTDLIB_SRC})
|
||||
add_library(squirrel::sqstdlib ALIAS sqstdlib)
|
||||
set_property(TARGET sqstdlib PROPERTY EXPORT_NAME sqstdlib)
|
||||
target_link_libraries(sqstdlib squirrel)
|
||||
if(NOT SQ_DISABLE_INSTALLER)
|
||||
install(TARGETS sqstdlib EXPORT squirrel
|
||||
@ -30,6 +31,7 @@ endif()
|
||||
if(NOT DISABLE_STATIC)
|
||||
add_library(sqstdlib_static STATIC ${SQSTDLIB_SRC})
|
||||
add_library(squirrel::sqstdlib_static ALIAS sqstdlib_static)
|
||||
set_property(TARGET sqstdlib_static PROPERTY EXPORT_NAME sqstdlib_static)
|
||||
if(NOT SQ_DISABLE_INSTALLER)
|
||||
install(TARGETS sqstdlib_static EXPORT squirrel ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development)
|
||||
endif()
|
||||
|
||||
4
squirrel-config.cmake.in
Normal file
4
squirrel-config.cmake.in
Normal file
@ -0,0 +1,4 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/squirrel-config-version.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/squirrel-targets.cmake")
|
||||
@ -14,6 +14,7 @@ set(SQUIRREL_SRC sqapi.cpp
|
||||
if(NOT DISABLE_DYNAMIC)
|
||||
add_library(squirrel SHARED ${SQUIRREL_SRC})
|
||||
add_library(squirrel::squirrel ALIAS squirrel)
|
||||
set_property(TARGET squirrel PROPERTY EXPORT_NAME squirrel)
|
||||
if(NOT SQ_DISABLE_INSTALLER)
|
||||
install(TARGETS squirrel EXPORT squirrel
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Libraries
|
||||
@ -33,6 +34,7 @@ endif()
|
||||
if(NOT DISABLE_STATIC)
|
||||
add_library(squirrel_static STATIC ${SQUIRREL_SRC})
|
||||
add_library(squirrel::squirrel_static ALIAS squirrel_static)
|
||||
set_property(TARGET squirrel_static PROPERTY EXPORT_NAME squirrel_static)
|
||||
if(NOT SQ_DISABLE_INSTALLER)
|
||||
install(TARGETS squirrel_static EXPORT squirrel ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Development)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user