1

2 つのライブラリをプロジェクトに含めて使用しようとしています。CLionでCMakeを使用しています。

2 つのライブラリは、https: //github.com/herumi/blshttps://github.com/herumi/mclです。

次のプロジェクト設定を取得しました。

ここに画像の説明を入力

これはメインの CMake ファイルです。

cmake_minimum_required(VERSION 3.17)
project(blsbenchmark)

set(CMAKE_CXX_STANDARD 14)

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")

set(SOURCE_FILES src/main.cpp)
add_executable(blsbenchmark ${SOURCE_FILES})

include(FindPkgConfig)
find_package(bls REQUIRED)
include_directories(${BLS_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${BLS_LIBRARY})

find_package(mcl REQUIRED)
include_directories(${MCL_INCLUDE_DIR})
target_link_libraries(${PROJECT_NAME} ${MCL_LIBRARY})

Findbls.cmake:_

set(FIND_BLS_PATHS
        /opt/bls)

find_path(BLS_INCLUDE_DIR bls.h
        PATH_SUFFIXES include
        PATHS ${FIND_BLS_PATHS})

find_library(BLS_LIBRARY
        NAMES bls384_256
        PATH_SUFFIXES lib
        PATHS ${FIND_BLS_PATHS})

Findmcl.cmake:_

set(FIND_MCL_PATHS
        /opt/mcl)

find_path(MCL_INCLUDE_DIR bn_c384_256.h, bn.h
        PATH_SUFFIXES include
        PATHS ${FIND_MCL_PATHS})

find_library(MCL_LIBRARY
        NAMES mclbn384_256
        PATH_SUFFIXES lib
        PATHS ${FIND_MCL_PATHS})

このセットアップにより、ライブラリのファイルをプロジェクトに非常にうまく含めることができます。

ここに画像の説明を入力

ただし、ご覧のとおり、ライブラリ ファイルをプレフィックス (bls/bls.h または mcl/bn.h) なしでメイン (bn.h および bls.h) に直接リンクできるため、問題が発生します。

したがって、これをビルドしようとすると、次のようになります。

fatal error: mcl/bn.h: No such file or directory
   11 | #include <mcl/bn.h>
      |          ^~~~~~~~~~

ライブラリ自体がプレフィックス「mcl/bn.h」パスを必要とするためです。

ここに画像の説明を入力

したがって、問題は、これら 2 つのライブラリ (mcl と bls) をプロジェクトに含め、パスにプレフィックスを付けて、2 つのライブラリとも互換性があるようにする方法です。

4

1 に答える 1