cpr icon indicating copy to clipboard operation
cpr copied to clipboard

add pkg-config support

Open odek86 opened this issue 1 year ago • 6 comments
trafficstars

Is your feature request related to a problem?

please add pkg-config support, so user can use library without cmake. ive trying to add find_package(cpr REQUIRED) on CMakeLists.txt (cpr is installed on /usr/local as prefix ) but cmake couldnt find it. however when i try to built with command g++ -o test test.cpp -lcpr is built with success, but error comes : ./test error while loading shared libraries: libcpr.so.1: cannot open shared object file: No such file or directory

Possible Solution

pkg-config support or , more detailed instruction to use cmake (for noob as me)

Alternatives

No response

Additional Context

No response

odek86 avatar Jun 06 '24 03:06 odek86

Good idea! I Added it to the next major release.

In the meantime you can provide hints to find_package e.g. via find_package(cpr REQUIRED HINTS "/usr/local")

COM8 avatar Jun 08 '24 14:06 COM8

Regarding find_package(cpr REQUIRED) failure, I think that find_packge() section in the README includes the instructions that you need for CMake usage

https://github.com/libcpr/cpr?tab=readme-ov-file#find_package

guylevy84 avatar Jul 03 '24 10:07 guylevy84

Hey, is this issue open, and if so can I work on it for Hacktoberfest?

aadit-n3rdy avatar Oct 05 '24 18:10 aadit-n3rdy

Yes, it's still open. You are more than welcome to work on it. I added the "Hacktoberfest" tag.

COM8 avatar Oct 06 '24 04:10 COM8

So here's my Idea for this so far, I'd like to create a template for the .pc file and fill it in with configure_file. I have a few questions about how some of the libraries are linked though. From what I can tell, all the dependencies (SSL, libz and libcurl) are linked statically to libcpr, since I've been able to compile and link a test program by just linking it against libcpr.so. Is there something I'm missing? Are there any build flags which force CMake to link again OpenSSL or libcurl dynamically (hence requiring an entry in the .pc file)?

If so, I plan on modifying CMakeLists.txt to append these libraries to a variable, and use this variable in the call to configure_file. Please let me know if this approach works or if you have any suggested alternatives.

aadit-n3rdy avatar Oct 06 '24 17:10 aadit-n3rdy

  1. confugure_file good idea
  2. Static/Dynamic linking: There is the CMake variable called BUILD_SHARED_LIBS which allows you to some extend to decide if cpr links statically or dynamically. Ref: https://github.com/libcpr/cpr?tab=readme-ov-file#build-static-library
  3. adding them to a temporary list and then using them in the .pc file and the target_link_libraries sounds also good.

Two request I would have from my side:

  1. Please add documentation into the README.md as well as to the docs repo here: https://github.com/libcpr/docs
  2. Optional: Potential Integration/unit Test

COM8 avatar Oct 10 '24 17:10 COM8