Merge 21c815d676d94dbedac2ec55ba13c2fd4fea04cf into cd8dacccc657ae88a741823229ee08c314ab4bd8

This commit is contained in:
leftibot 2026-04-19 18:07:37 +08:00 committed by GitHub
commit e25c3f067e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 42 additions and 3 deletions

View File

@ -130,6 +130,7 @@ configure_file(Doxyfile.in ${CMAKE_BINARY_DIR}/Doxyfile)
include(CTest)
include(CPack)
include(GNUInstallDirs)
include(cmake/Catch.cmake)
if(NOT MINGW)
@ -483,4 +484,10 @@ configure_file(contrib/pkgconfig/chaiscript.pc.in lib/pkgconfig/chaiscript.pc @O
install(FILES "${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc"
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
add_test(NAME pkgconfig_prefix_test
COMMAND ${CMAKE_COMMAND}
-DPC_FILE=${chaiscript_BINARY_DIR}/lib/pkgconfig/chaiscript.pc
-DEXPECTED_PREFIX=${CMAKE_INSTALL_PREFIX}
-DEXPECTED_LIBDIR=${CMAKE_INSTALL_LIBDIR}
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/check_pkgconfig.cmake)

View File

@ -0,0 +1,32 @@
# Verify the generated chaiscript.pc has correct prefix and libdir values.
# This test catches issues where CMAKE_INSTALL_PREFIX or CMAKE_INSTALL_LIBDIR
# are not properly respected in the pkg-config file.
file(READ "${PC_FILE}" PC_CONTENT)
# Check that prefix matches CMAKE_INSTALL_PREFIX
string(REGEX MATCH "prefix=([^\n]*)" PREFIX_MATCH "${PC_CONTENT}")
set(ACTUAL_PREFIX "${CMAKE_MATCH_1}")
if(NOT ACTUAL_PREFIX STREQUAL EXPECTED_PREFIX)
message(FATAL_ERROR
"pkgconfig prefix mismatch:\n"
" expected: '${EXPECTED_PREFIX}'\n"
" actual: '${ACTUAL_PREFIX}'\n"
"CMAKE_INSTALL_PREFIX is not being respected in chaiscript.pc")
endif()
# Check that libdir uses the correct lib directory name
string(REGEX MATCH "libdir=([^\n]*)" LIBDIR_MATCH "${PC_CONTENT}")
set(ACTUAL_LIBDIR "${CMAKE_MATCH_1}")
set(EXPECTED_LIBDIR_VALUE "\${exec_prefix}/${EXPECTED_LIBDIR}")
if(NOT ACTUAL_LIBDIR STREQUAL EXPECTED_LIBDIR_VALUE)
message(FATAL_ERROR
"pkgconfig libdir mismatch:\n"
" expected: '${EXPECTED_LIBDIR_VALUE}'\n"
" actual: '${ACTUAL_LIBDIR}'\n"
"CMAKE_INSTALL_LIBDIR is not being respected in chaiscript.pc")
endif()
message(STATUS "pkgconfig check passed: prefix='${ACTUAL_PREFIX}', libdir='${ACTUAL_LIBDIR}'")

View File

@ -1,7 +1,7 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
Name: chaiscript
Description: ChaiScript is a scripting language that easily embeds into your existing C++ applications. It's built to be flexible and dynamic, yet still maintain the type-safety you expect as a C++ user. It can natively use classes, methods, and attributes, even if the class inherits functionality from a parent class.