tuket
tuket

Reputation: 3931

PostgreSQL libpq windows 10 CMake missing PostgreSQL_LIBRARY

I'm rying to setup a CMake project under windows 10 using PostgreSQL.

When I try to find_package

find_package(PostgreSQL REQUIRED)

I get the following error

  Could NOT find PostgreSQL (missing: PostgreSQL_LIBRARY) (found version
  "10.4")
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE)
  C:/Program Files/CMake/share/cmake-3.8/Modules/FindPostgreSQL.cmake:175 (find_package_handle_standard_args)
  server/CMakeLists.txt:13 (find_package)

It seems like it has found "10.4" version but it's missing the PostgreSQL_LIBRARY.

How can I fix that?

Upvotes: 1

Views: 3978

Answers (5)

Sirok_ 1
Sirok_ 1

Reputation: 11

It helped me to add the following 2 lines to cmake

set(PostgreSQL_ADDITIONAL_VERSIONS "15.3")
set(PostgreSQL_ROOT "C:/Program Files/PostgreSQL/15")

And cmake found the files it needed on its own

Replace the version with the one you have installed, I installed postgresql through the official installer

Upvotes: 0

OptxPrime
OptxPrime

Reputation: 17

This could help if you installed/updated PostgreSQL with homebrew.

There were recent updates to CMake which are related to PostgreSQL and homebrew. Quoting from CMake commit: "As of 14.5, homebrew names PostgreSQL directories with the version number, e.g., postgresql@14."

Updating CMake to the latest version fixed this issue for me. Installing cmake with homebrew Note: My answer is relevant for those having the same or similar issue after PostgreSQL 14.5.

Upvotes: 0

davidxmiller
davidxmiller

Reputation: 23

I had the same goal - trying to use PostgreSQL libpq on Windows 10 in a CMake project, and I had the same error. Following on from Mike's reply I added set(PostgreSQL_ADDITIONAL_VERSIONS "14") before the call to find_package(PostgreSQL REQUIRED) and can confirm this fixed the problem. Just confirming that Mike's solution worked for me.

Upvotes: 1

basjak
basjak

Reputation: 93

Add postgreSQL lib, bin, include directories to the environment variables

Upvotes: 0

Michael Surette
Michael Surette

Reputation: 711

My FindPostgreSQL.cmake has this note:

# Note:
# PostgreSQL_ADDITIONAL_VERSIONS is a variable that can be used to set the
# version number of the implementation of PostgreSQL.
# In Windows the default installation of PostgreSQL uses that as part of the path.
# E.g C:\Program Files\PostgreSQL\8.4.
# Currently, the following version numbers are known to this module:
# "10" "9.6" "9.5" "9.4" "9.3" "9.2" "9.1" "9.0" "8.4" "8.3" "8.2" "8.1" "8.0"
#
# To use this variable just do something like this:
# set(PostgreSQL_ADDITIONAL_VERSIONS "9.2" "8.4.4")
# before calling find_package(PostgreSQL) in your CMakeLists.txt file.
# This will mean that the versions you set here will be found first in the order
# specified before the default ones are searched.
#
# ----------------------------------------------------------------------------
# You may need to manually set:
#  PostgreSQL_INCLUDE_DIR  - the path to where the PostgreSQL include files are.
#  PostgreSQL_LIBRARY_DIR  - The path to where the PostgreSQL library files are.
# If FindPostgreSQL.cmake cannot find the include files or the library files.

HTH

Mike

Upvotes: 0

Related Questions