Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3942082
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T00:37:12+00:00 2026-05-20T00:37:12+00:00

I maintain a library with FFI bindings on Hackage. So my Haskell library depends

  • 0

I maintain a library with FFI bindings on Hackage. So my Haskell library depends on the corresponding C library and its header files. Now I specify the external dependency in the .cabal file like this:

PkgConfig-Depends:
      libfoo >= 1.2

And it works well for me in Linux. However, I have a user of the library who reports, that installing pkg-config on Windows is rather cumbersome, and instead he prefers

Includes:
      foo.h
Extra-libraries:
      foo

I’d like my library to be as easy to build as possible, and don’t want to force build dependencies which are not strictly required. However, I see that Cabal manual suggests to use PkgConfig-Depends.

My questions:

  • Which way I should prefer for cross-platform packages?
  • Is it possible to write a .cabal file in such a way, that it can work with pkg-config and without?
  • And, by the way, is pkg-config included in the Haskell platform (I don’t have a Windows machine to check right now)?
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-20T00:37:12+00:00Added an answer on May 20, 2026 at 12:37 am

    The pkg-config method is preferable because pkg-config knows where to find include and library files, which may be in nonstandard locations on some systems.

    You can write the .cabal file to use both methods. Using a flag, as shown here, has the advantage that Cabal will automatically try the other flag value if the default fails. (Below example is not tested)

    Flag UsePkgConfig
      Description: Use pkg-config to check for library dependences
      Default: True
    
    Executable hax
      if flag(UsePkgConfig)
        PkgConfig-Depends: libfoo >= 1.2
      else
        Includes: foo.h
        Extra-libraries: foo
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I maintain an old PC-only application written in Delphi 7. Although Delphi has served
I maintain a Java Swing application. For backwards compatibility with java 5 (for Apple
I maintain an application which, during the course of two years, has constantly required
I maintain the build system at my company, which is currently using CVS. This
We currently maintain a suit of MFC applications that are fairly well designed, however
I'm trying to maintain a Setup Project in Visual Studio 2003 (yes, it's a
I currently maintain 3 websites all revolving around the same concept. 2 of them
My goal is to maintain a web file server separately from my main ASP.NET
We want to maintain 3 webservices for the different steps of deployment, but how
How would you maintain the legacy applications that: Has no unit tests have big

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.