0

依存関係が自己完結型の自己完結型ライブラリを作成しようとしています。すべてのインストールは <repo_dir>/libs//build にインストールされます。cmake ビルド システムで依存関係を見つけるには、find_package を使用します。すべてのインストールはカスタムの場所にあるため、ヒントを使用して次のように支援します-

# CMake 3.16.3
# ../lib/Catch2/build is where Catch2Config.cmake is located
find_package(Catch2 REQUIRED HINTS "../lib/Catch2/build" NO_MODULE)
include_directories(tests)
add_executable(tests tests.cpp)
target_link_libraries(tests PRIVATE project_warnings project_options Catch2::Catch2)

Catch2はヘッダーのみであるため、これを必要としない可能性が高いことを認識していますが、cmakeが何をしているのかを理解しようとしています。上記の CMakeLists.txt が出力されます

include could not find load file:                                                                                                   
    <repo_dir>/lib/Catch2/build/Catch2Targets.cmake                                                   │
Call Stack (most recent call first):                                                                                                  
  tests/CMakeLists.txt:1 (find_package)

ターゲットファイルも必要なようです。Catch2 リポジトリで見つかりません。follyでも同じプロセスを試していますが、うまくいきません。Boostのモジュールモードで以下を使用するとうまくいきました。なぜそれが機能するのですか?

set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "${PROJECT_SOURCE_DIR}/lib/boost_1_75_0/")
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${PROJECT_SOURCE_DIR}/lib/boost_1_75_0/libs")
find_package(Boost 1.60.0 REQUIRED)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(${CMAKE_PROJECT_NAME} ${Boost_LIBRARIES})

誰かが私の問題と私がどのように使用すべきかを明らかにするのを手伝ってくれませんか

  1. ヘッダーのみのライブラリ
  2. 静的ライブラリ バイナリ
  3. セルフコンパイル ライブラリ

珍しい場所にあるのは誰のリソースですか?

4

0 に答える 0