0

Output do Erro:

CMake Error at CMakeLists.txt:37 (find_package): Could not find a package configuration file provided by "libhydrogen" with any of the following names:

libhydrogenConfig.cmake libhydrogen-config.cmake

Add the installation prefix of "libhydrogen" to CMAKE_PREFIX_PATH or set "libhydrogen_DIR" to a directory containing one of the above files. If "libhydrogen" provides a separate development package or SDK, be sure it has been installed.

Configuring incomplete, errors occurred!

Código do 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
)

I know that the problem is when trying to include libhydrogen, because without this library the code compiled normally. My question is if anyone knows how I can make cmake find this library? It's located in a folder in my project, not in /usr/lib !

1 Answers1

0

the problem is solved. I didn't use the libhydrogen library, I changed it to botan (both for cryptography). However, when compiling I came across the same error. What I did to solve it was to create this Find.cmake with the instructions to compile.

It looked like this:

modules/FindBotan.cmake

find_package(PkgConfig REQUIRED)

if (NOT TARGET Botan::Botan)
  pkg_check_modules(Botan QUIET IMPORTED_TARGET botan)
  if (TARGET PkgConfig::Botan)
    add_library(Botan::Botan ALIAS PkgConfig::Botan)
  endif ()
endif ()

if (NOT TARGET Botan::Botan)
  find_path(Botan_INCLUDE_DIRS NAMES botan/botan.h
            PATH_SUFFIXES botan-2
            DOC "The Botan include directory")

  find_library(Botan_LIBRARIES NAMES botan botan-2
               DOC "The Botan library")

  mark_as_advanced(Botan_INCLUDE_DIRS Botan_LIBRARIES)

  add_library(Botan::Botan IMPORTED UNKNOWN)
  set_target_properties(
    Botan::Botan
    PROPERTIES
    IMPORTED_LOCATION "${Botan_LIBRARIES}"
    INTERFACE_INCLUDE_DIRECTORIES "${Botan_INCLUDE_DIRS}"
  )
endif ()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(
  Botan
  REQUIRED_VARS Botan_LIBRARIES Botan_INCLUDE_DIRS
)

CmakeLists looks like this:

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)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/modules")
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(Botan 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 Botan::Botan
)