- Ubuntu 12.04版
- C制造2.8.9
- 邮政数据库
我正在尝试让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条答案
按热度按时间eiee3dmh1#
确保您已安装
libpq-dev\
和postgresql-server-dev-all
(或特定版本,如postgresql-server-dev-9.4
)以防你丢了什么包裹
应该能修好。
s5a0g9ez2#
经过一段时间的调试,我发现它在试图查找
pg_type.h
时卡住了此文件位于
/usr/include/postgresql/catalog/pg_types.h
中,但模块希望在/usr/include/postgresql/server/catalog/pg_types.h
中找到它如果我把
postgresql
加到PATH_SUFFIXES
上,它就能工作0wi1tuuw3#
在Ubuntu上,您也可以通过调用
cmake
来解决这个问题,其中PostgreSQL_TYPE_INCLUDE_DIR
的定义如下:这个问题和可能的修复方法请参见bug报告[1]。关于Debian邮件列表移动背后的原因请参见[3]。
在Ubuntu/Debian上,从PostgreSQL 9.3开始,头文件
pg_type.h
被移动到单独的包中(从libpq-dev
移动到postgresql-server-dev
),因此文件pg_type.h
被移动到新位置oknwwptz4#
从Linux Mint 17.3(“Rosa”)到PostgreSQL 9.3,我不得不调整伊利亚choly的解决方案(有趣的是,列表中建议的
postgres
条目已经存在于文件中,但不足以修复问题)。我必须编辑第114行附近的
/usr/share/cmake-2.8/Modules/FindPostgreSQL.cmake
并添加postgresql/9.3
,这样find_path
调用看起来就像