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:
Kyle Edwards
2019-07-29 22:04:02 -04:00
parent 91bb6b28fd
commit 8f04b266f5
5 changed files with 45 additions and 2 deletions

View File

@ -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()

View File

@ -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)

View File

@ -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
View File

@ -0,0 +1,4 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/squirrel-config-version.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/squirrel-targets.cmake")

View File

@ -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()