]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cmake/AddCephTest: use namespaced Catch2 imported targets 69165/head
authorSun Yuechi <sunyuechi@iscas.ac.cn>
Fri, 29 May 2026 10:19:18 +0000 (18:19 +0800)
committerSun Yuechi <sunyuechi@iscas.ac.cn>
Fri, 29 May 2026 10:30:10 +0000 (18:30 +0800)
AddCephTest.cmake links the bare target names Catch2 / Catch2WithMain.
With WITH_SYSTEM_CATCH2=ON, CPM resolves Catch2 via find_package(),
which only exports the namespaced IMPORTED targets Catch2::Catch2 /
Catch2::Catch2WithMain. CMake then treats the bare names as plain
library names and the link fails with -lCatch2WithMain, since the
physical library is named libCatch2Main (OUTPUT_NAME "Catch2Main").

Use the namespaced names. Catch2 exports them as ALIASes in the bundled
(CPM subproject) build too, so the default path keeps working.

Signed-off-by: Sun Yuechi <sunyuechi@iscas.ac.cn>
cmake/modules/AddCephTest.cmake

index cd8cc90676b029c6a05e466c91592fb397238945..83f442aec19b133ff7bac590d54b920542330dbc 100644 (file)
@@ -183,9 +183,9 @@ if(DEFINED catch2_opt_EXTRA_INCS)
 endif()
 
 if(${catch2_opt_NO_CATCH2_MAIN})
-  LIST(APPEND tl_libs Catch2)
+  LIST(APPEND tl_libs Catch2::Catch2)
 else()
-  LIST(APPEND tl_libs Catch2WithMain)
+  LIST(APPEND tl_libs Catch2::Catch2WithMain)
 endif()
 
 target_link_libraries(unittest_${test_name}