15
  • Ubuntu 12.04
  • CMake 2.8.9
  • Postgresql 9.2.2

FindPostgreSQLモジュールに検索させようとしています/usr/include/postgresql/libpq-fe.h

これが私の中にあるものですCMakeLists.txt

find_package(PostgreSQL REQUIRED)

これは私が得るエラーです:

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)

電話をかける前に次の行を追加しましたfind_packageが、効果がないようです。

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

グーグルも試しましPostgreSQL_TYPE_INCLUDE_DIRたが、何も見つかりませんでした。他に何を試すことができますか?

4

4 に答える 4

34

libpq-dev\およびpostgresql-server-dev-all(または特定のバージョンなどpostgresql-server-dev-9.4)の両方をインストールしたことを確認してください

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

あなたがいくつかのパッケージを逃している場合に備えて

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

それを修正する必要があります。

于 2016-10-13T17:23:07.230 に答える
7

もう少しデバッグした後、私はそれが見つけようとして立ち往生していることに気づきましたpg_type.h

このファイルはにあります/usr/include/postgresql/catalog/pg_types.hが、モジュールはでそれを見つけることを期待しています/usr/include/postgresql/server/catalog/pg_types.h

find_path(PostgreSQL_TYPE_INCLUDE_DIR
  NAMES catalog/pg_type.h
  PATHS
   # Look in other places.
   ${PostgreSQL_ROOT_DIRECTORIES}
  PATH_SUFFIXES
    pgsql/server
    postgresql/server
    include/server
  # Help the user find it if we cannot.
  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)

に追加postgresqlすると動作しますPATH_SUFFIXES

find_path(PostgreSQL_TYPE_INCLUDE_DIR
  NAMES catalog/pg_type.h
  PATHS
   # Look in other places.
   ${PostgreSQL_ROOT_DIRECTORIES}
  PATH_SUFFIXES
    postgresql
    pgsql/server
    postgresql/server
    include/server
  # Help the user find it if we cannot.
  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
于 2012-12-18T14:21:57.013 に答える
7

Ubuntuでは、次のように定義して呼び出すことで、このcmake問題を回避することもできます。PostgreSQL_TYPE_INCLUDE_DIR

cmake -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/

この問題と潜在的な修正[2]については、バグレポート[1]を参照してください。また、[3]のdebianメーリングリストで移動の背後にある理由についての議論を参照してください。

Ubuntu / Debianでは、PostgreSQL 9.3以降、ヘッダーファイルpg_type.h は別のパッケージ(からlibpq-devpostgresql-server-devに移動され、その結果、ファイルpg_type.hは新しい場所に移動されます

于 2017-10-08T15:58:20.627 に答える
2

Linux Mint 17.3( "Rosa")とPostgreSQL 9.3から、ilia cholyのソリューションを調整する必要がありました(興味深いことに、postgresリスト内の提案されたエントリはすでにファイルに存在していましたが、修正するには不十分でした)。

/usr/share/cmake-2.8/Modules/FindPostgreSQL.cmake114行目あたりを編集して、次のように追加するpostgresql/9.3必要がありました。find_path

find_path(PostgreSQL_TYPE_INCLUDE_DIR
  NAMES catalog/pg_type.h
  PATHS
   # Look in other places.
   ${PostgreSQL_ROOT_DIRECTORIES}
  PATH_SUFFIXES
    postgresql/9.3
    postgresql
    pgsql/server
    postgresql/server
    include/server
  # Help the user find it if we cannot.
  DOC "The ${PostgreSQL_INCLUDE_DIR_MESSAGE}"
)
于 2016-07-29T15:25:43.523 に答える