-
Couldn't load subscription status.
- Fork 103
Description
restinio-0.7.2-full.zip cannot be used as a separate(external) project because it does not install all it's locally provided dependencies.
Also to find shipped asio manual setting of CMAKE_MODULE_PATH is needed to provide path to Findasio.cmake module.
But this does not saves the day because llhttp::llhttp_static and nonstd::expected-lite still missing and according to restinio-config.cmake we don't use find_dependency() on them because they are "local".
When llhttp and expected-lite is set to local, Restinio adds them to itself using add_subdirectory() but they are not being installed as part of restinio installation step, so later in other project doing find_package(restinio REQUIRED) we got this:
CMake Error at CMakeLists.txt:61 (find_package):
-- Configuring incomplete, errors occurred!
Found package configuration file:
D:/Projects/proj/build/local_deps/lib/cmake/restinio/restinio-config.cmake
but it set restinio_FOUND to FALSE so package "restinio" is considered to
be NOT FOUND. Reason given by package:
The following imported targets are referenced, but are missing:
llhttp::llhttp_static nonstd::expected-lite
Possibly local fmt will have similar problems. I am using external fmt with RESTINIO_DEP_FMT == 'find' and it's ok.
Resolving this issue will requre significant amount of build system refactoring. I think we need to use Superbuild pattern here.
Just build all dependencies one by one as a separate projectd and install them.
Restinio should use them via find_dependency() and add them to Restinio lib target, so any target using Restinio will know about all dependencies.
It will be great to see future Restinio release with this issues resolved!