cmakelibpq

FindPostgreSQL.cmake won't work on ubuntu


  • Ubuntu 12.04
  • CMake 2.8.9
  • Postgresql 9.2.2

I'm trying to get the FindPostgreSQL module to find /usr/include/postgresql/libpq-fe.h.

Here's what I have in my CMakeLists.txt:

find_package(PostgreSQL REQUIRED)

This is the error I get:

CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:97 (MESSAGE):
  Could NOT find PostgreSQL (missing: PostgreSQL_TYPE_INCLUDE_DIR) (found
  version "9.2.2")
Call Stack (most recent call first):
  /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:288 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-2.8/Modules/FindPostgreSQL.cmake:155 (find_package_handle_standard_args)
  CMakeLists.txt:7 (find_package)

I added the following lines before calling find_package but it didn't seem to have any effect.

set(PostgreSQL_ADDITIONAL_VERSIONS "9.2.2")
set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "/usr/include/postgresql")

I also tried googling for PostgreSQL_TYPE_INCLUDE_DIR but didn't find anything. What else can I try?


Solution

  • Make sure you've installed both libpq-dev\ and postgresql-server-dev-all (or specific version e.g. postgresql-server-dev-9.4)

    $ dpkg --get-selections | grep -e "libpq-dev\|postgresql-server-dev"
    

    in case you're missing some package

    apt-get install libpq-dev postgresql-server-dev-all
    

    should fix it.