Преглед изворни кода

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.
Kyle Edwards пре 6 година
родитељ
комит
8f04b266f5
5 измењених фајлова са 45 додато и 2 уклоњено
  1. 35 0
      CMakeLists.txt
  2. 2 2
      sq/CMakeLists.txt
  3. 2 0
      sqstdlib/CMakeLists.txt
  4. 4 0
      squirrel-config.cmake.in
  5. 2 0
      squirrel/CMakeLists.txt

+ 35 - 0
CMakeLists.txt

@@ -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 - 2
sq/CMakeLists.txt

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

+ 2 - 0
sqstdlib/CMakeLists.txt

@@ -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 - 0
squirrel-config.cmake.in

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

+ 2 - 0
squirrel/CMakeLists.txt

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