输出出错:
在CMakeLists.txt中出现CMake错误:37(查找包):找不到由“libhydrogen”提供的具有以下任何名称的软件包配置文件:
数据库配置
将“libhydrogen”的安装前缀添加到CMAKE_PREFIX_PATH中,或将“libhydrogen_DIR”设置为包含上述文件之一的目录。如果“libhydrogen”提供单独的开发包或SDK,请确保已安装。
配置不完整,出现错误!
* 科迪戈做Cmake*:
cmake_minimum_required(VERSION 3.13.4)
project(Application)
set(CMAKE_PREFIX_PATH /app/libraries/vcpkg_installed/x64-linux)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY /app/build/bin)
option(RUN_PROD "Prod?" OFF)
set (CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CMAKE_SYSTEM_NAME Linux)
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)
# link_directories(/usr/lib)
# include_directories(/usr/include)
include_directories(HEADER_FILES /app/src/includes)
find_package(PkgConfig)
find_package(Boost REQUIRED COMPONENTS system)
find_package(plog CONFIG REQUIRED)
find_package(OpenSSL REQUIRED)
find_library(PQ_LIB pq)
find_package(libpqxx CONFIG REQUIRED)
find_package(fmt CONFIG REQUIRED)
find_path(JWT_CPP_INCLUDE_DIRS "jwt-cpp/base.h")
find_package(libhydrogen CONFIG REQUIRED)
pkg_check_modules(Pistache REQUIRED IMPORTED_TARGET libpistache)
add_executable(
${PROJECT_NAME}
app/config/Connect.cpp
app/config/Logger.cpp
app/utils/Queries.cpp
app/middleware/Authentication.cpp
app/utils/Tratament.cpp
app/models/UserModel.cpp
app/models/ArticleModel.cpp
app/controllers/UserController.cpp
app/controllers/ArticleController.cpp
app/routes/Marker.cpp
app/Server.cpp
)
include_directories(
${PROJECT_NAME} PRIVATE includes/config
)
# add_library(
# ${PROJECT_NAME}-libs SHARED
# app/config/Connect.cpp
# )
target_link_libraries(
${PROJECT_NAME}
PUBLIC OpenSSL::SSL OpenSSL::Crypto
PRIVATE plog::plog
PRIVATE pq
PRIVATE libpqxx::pqxx
PRIVATE PkgConfig::Pistache
PRIVATE fmt::fmt-header-only
PRIVATE ${JWT_CPP_INCLUDE_DIRS}
PRIVATE hydrogen::hydrogen
)
我知道问题出在试图包含libhydrogen的时候,因为没有这个库的话代码编译正常。我的问题是,是否有人知道我如何让cmake找到这个库?它位于我项目的一个文件夹中,而不是/usr/lib!
1条答案
按热度按时间shyt4zoc1#
这个问题解决了。我没有使用libhydrogen库,我把它改成了botan(都是为了加密)。但是,在编译的时候我遇到了同样的错误。我所做的就是用编译指令创建这个Find.cmake。
它看起来是这样的:
模块/查找Botan.cmake
CmakeLists看起来像这样: