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.15k stars 93 forks source link

Add cmake option for using `find_package` to locate the third_party headers #83

Closed prince-chrismc closed 4 years ago

prince-chrismc commented 4 years ago

fixes #79

This is to make dependencies management easier when dealing with package managers and to prevent duplication of source code.

eao197 commented 4 years ago

I don't like the idea when one option turns on/off the usage of a bunch of libraries. It means that if a user wants to use a particular version of (for example) string-view-lite, he/she has to add also variant-lite, expected-lite and optional-lite to his/her project too.

If the case when a user wants to use own version of (for example) string-view-lite really takes a place, then approach similar to RESTINIO_USE_EXTERNAL_HTTP_PARSER should be used.

I also don't like an idea to remove third_party subdirectory. While it's here it's possible to add another 3rd-party library to RESTinio (especially if that library is not currently present in conan or vcpkg).

prince-chrismc commented 4 years ago

Thank you for your feedback. I will update this to reflect what you are describing.

prince-chrismc commented 4 years ago

I also don't like an idea to remove third_party subdirectory. While it's here it's possible to add another 3rd-party library to RESTinio (especially if that library is not currently present in conan or vcpkg).

To be very clear, I did not remove it from the file structure, just the include has been modified to hide it.

-#include "third_party/expected-lite/expected.hpp"
+#include "nonstd/expected.hpp"

My motivation for this was to not require a define. The file structure in third party is the same as the official installation.

-third_party/expected-lite/expected.hpp
+third_party/nonstd/expected.hpp
-third_party/optional-lite/optional.hpp
+third_party/nonstd/optional.hpp
-third_party/string-view-lite/string_view.hpp
+third_party/nonstd/string_view.hpp
-third_party/variant-lite/variant.
+third_party/nonstd/variant.hpp
eao197 commented 4 years ago

I've merged this PR into a temporary branch. But this functionality won't be a part of 0.6.6 release.

It's because this functionality requires some more work to be a part of RESTinio and I think it doesn't handle some use cases of RESTinio usages in its current form. It seems that some additional stuff will be affected by that change (at least restinio-conan should be extended with new options). And some new testing environments should be prepared for checking RESTinio with various combinations of external projects.

It requires some work and will take some time. But I don't want to spend this time/resources right now and want to concentrate on the preparation of the release of easy_parser_router this week.

So the support of external nonstd projects will be postponed to v.0.6.7.

prince-chrismc commented 4 years ago

I am very happy with that, if there is any help I can be feel free to ask. I have some resources I can spare to help things along =)