无法在 Mac 上将 libpqxx 与 CMake 一起使用

问题描述 投票:0回答:1

我在 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。

c++ postgresql cmake libpqxx
1个回答
0
投票

我在我发布的另一个问题中找到了解决方案here。它使用 pkg-config。

© www.soinside.com 2019 - 2024. All rights reserved.