0

我正在尝试创建一个自包含库,其依赖项是自包含的。所有安装都安装到 <repo_dir>/libs//build。要在 cmake 构建系统中查找依赖项,我使用 find_package。因为所有安装都在自定义位置,所以我指出我使用 HINTS 来提供帮助 -

# 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 存储库中找不到。我也在为愚蠢尝试相同的过程,但它对我也不起作用。在模块模式下使用以下 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