Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add pkg-config support #1061

Open
odek86 opened this issue Jun 6, 2024 · 6 comments
Open

add pkg-config support #1061

odek86 opened this issue Jun 6, 2024 · 6 comments

Comments

@odek86
Copy link

odek86 commented Jun 6, 2024

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

@COM8
Copy link
Member

COM8 commented Jun 8, 2024

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")

@guylevy84
Copy link
Contributor

guylevy84 commented Jul 3, 2024

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

@aadit-n3rdy
Copy link

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

@COM8 COM8 added the Hacktoberfest https://hacktoberfest.digitalocean.com/ label Oct 6, 2024
@COM8
Copy link
Member

COM8 commented Oct 6, 2024

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

@aadit-n3rdy
Copy link

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.

@COM8
Copy link
Member

COM8 commented Oct 10, 2024

  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 COM8 removed the Hacktoberfest https://hacktoberfest.digitalocean.com/ label Nov 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants