我在 C++ 程序中使用 libpqxx 时遇到问题。
这是main.cpp:
#include <iostream>
#include <pqxx/pqxx>
int main(int argc, const char *argv[])
{
std::cout << "Hello, world!" << std::endl;
try {
pqxx::connection connection("user=iran password=irandb host=127.0.0.1 port=5432 target_session_attrs=read-write");
std::cout << "Connected successfully!" << std::endl;
} catch (const std::exception &e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
这是 CMakeLists.txt:
cmake_minimum_required(VERSION 3.25.0)
project(Main VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(PostgreSQL_INCLUDE_DIR /usr/local/Cellar/postgresql@15)
set(libpqxx_DIR /usr/local/Cellar/libpqxx/7.7.5/lib/cmake)
find_package(libpqxx REQUIRED)
set(PROJECT_SOURCES src/main.cpp)
add_executable(Main ${PROJECT_SOURCES})
target_link_libraries(Main PRIVATE pqxx)
您可能已经猜到了,我已经通过 Homebrew 安装了 PostgreSQL 和 libpqxx,为了让
find_package()
正常工作,我的系统上还有以下文件:
/usr/local/Cellar/libpqxx/7.7.5/lib/cmake/libpqxx-config.cmake /usr/local/Cellar/libpqxx/7.7.5/lib/cmake/config.cmake
我从这里得到的。
但是,当我运行
cmake
时,出现以下错误:
CMake Error at /usr/local/Cellar/libpqxx/7.7.5/lib/cmake/libpqxx-config.cmake:4 (include):
include could not find requested file:
/usr/local/Cellar/libpqxx/7.7.5/lib/cmake/libpqxx-targets.cmake
Call Stack (most recent call first):
CMakeLists.txt:10 (find_package)
有人可以告诉我在我的
libpqxx-config.cmake
文件中写什么吗?即使我注释掉了 libpqxx-config.cmake
中的最后一行,程序也会遇到运行时错误,因为它不能 #include <pqxx/pqxx>
。
附注我使用的是基于 Intel 的 Mac 和 macOS Monterey 12.6.6。
我在我发布的另一个问题中找到了解决方案here。它使用 pkg-config。