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>
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}