我正试图让FindPostgreSQL
模块找到/usr/include/postgresql/libpq-fe.h
.
这就是我的意思CMakeLists.txt
:
find_package(PostgreSQL REQUIRED)
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
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)
Run Code Online (Sandbox Code Playgroud)
我在调用之前添加了以下行,find_package
但它似乎没有任何效果.
set(PostgreSQL_ADDITIONAL_VERSIONS "9.2.2")
set(PostgreSQL_ADDITIONAL_SEARCH_PATHS ${PostgreSQL_ADDITIONAL_SEARCH_PATHS} "/usr/include/postgresql")
Run Code Online (Sandbox Code Playgroud)
我也尝试使用谷歌搜索,PostgreSQL_TYPE_INCLUDE_DIR
但没有找到任何东西.我还能尝试什么?
Tom*_*art 19
请确保您已安装了libpq-dev\
和postgresql-server-dev-all
(或特定版本如postgresql-server-dev-9.4
)
$ dpkg --get-selections | grep -e "libpq-dev\|postgresql-server-dev"
Run Code Online (Sandbox Code Playgroud)
万一你错过了一些包裹
apt-get install libpq-dev postgresql-server-dev-all
Run Code Online (Sandbox Code Playgroud)
应该解决它.
经过一些调试后,我发现它正在试图找到它 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}"
)
Run Code Online (Sandbox Code Playgroud)
如果我添加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}"
)
Run Code Online (Sandbox Code Playgroud)
在Ubuntu,你也可以通过调用解决该问题cmake
与具有PostgreSQL_TYPE_INCLUDE_DIR
这样的定义:
cmake -DPostgreSQL_TYPE_INCLUDE_DIR=/usr/include/postgresql/
Run Code Online (Sandbox Code Playgroud)
有关此问题,请参见错误报告[1]和潜在的修复程序[2]。Álso在[3]上的debian mailinglist上看到了有关此举背后的原因的讨论。
在Ubuntu / Debian上,从PostgreSQL 9.3开始,头文件pg_type.h
被移动到一个单独的包中(从libpq-dev
到postgresql-server-dev
),因此该文件pg_type.h
被移动到了新位置
归档时间: |
|
查看次数: |
8091 次 |
最近记录: |