Stiffstream / restinio

Cross-platform, efficient, customizable, and robust asynchronous HTTP(S)/WebSocket server C++ library with the right balance between performance and ease of use
Other
1.13k stars 93 forks source link

Fails to find system Catch2: include could not find requested file: Catch #218

Open yurivict opened 2 months ago

yurivict commented 2 months ago

When cmake arguments include -DRESTINIO_DEP_CATCH2=system, configure fails:

CMake Error at CMakeLists.txt:350 (include):
  include could not find requested file:

    Catch

CMake Error at cmake/unittest.cmake:25 (catch_discover_tests):
  Unknown CMake command "catch_discover_tests".
Call Stack (most recent call first):
  test/metaprogramming/CMakeLists.txt:2 (include)

find_package(Catch2 REQUIRED) is missing.

The problem goes away with this patch that adds find_package in general:

--- CMakeLists.txt.orig 2024-02-02 12:28:15 UTC
+++ CMakeLists.txt
@@ -347,6 +347,7 @@ if (RESTINIO_TEST)
         message("========================================")
     endif ()

+    find_package(Catch2 REQUIRED)
     include(Catch)

     enable_testing()

This should be done only when RESTINIO_DEP_CATCH2=system.

Version 0.7.2 FreeBSD 14.0 catch2-3.5.4

eao197 commented 2 months ago

Hi!

If I understand correctly, you've installed Catch2 via FreeBSD's package manager and the have tried to configure RESTinio with -DRESTINIO_DEP_CATCH2=system. Am I right?

The idea behind system, local and find was as simple as following:

So, if Catch2 installed via FreeBSD's package manager and is available via CMake's find_package then find should be used as the value for RESTINIO_DEP_CATCH2.