0

我正在尝试让一个基本的 cmake 项目与 2 个子项目(每个都是一个库)一起工作,其中一个依赖于另一个。

因此,我有一个针对 lib1 的独立项目和一个针对 lib2 的独立项目(但这取决于 lib1)。一些 lib2 作者可以,而其他人无法访问 lib1 源代码。如果不需要访问,似乎一个接一个地构建和安装是要走的路。有没有办法使用 cmake 一次性构建它们?目前,我正在尝试使用一个整体项目,libs。

但是,由于这些库是相关的,我想以类似 boost / poco 的方式称呼它们。那是我想写的lib2:

find_package(libs COMPONENTS lib1 REQUIRED)

target_link_libraries(lib2 PUBLIC libs::lib1)

我已经为 lib1 和 lib2 以及 libs 创建了配置文件。但是,我不断收到相同的错误

CMake Error at libs/lib2/CMakeLists.txt:67 (find_package):
By not providing "Findlibs.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "libs", but
CMake did not find one.

Could not find a package configuration file provided by "libs" with any of
the following names:

libsConfig.cmake
libs-config.cmake

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

我不明白将这些文件放在哪里。它在前缀/等下搜索它们,但在构建这些库时尚未安装。放置 -config.cmake 文件的正确位置是什么?我已经把它们都放进去了

${CMAKE_BINARY_DIR}/libs

这似乎与 Poco 相似,但错误仍然存​​在。图书馆如何找到彼此?

// 更新:

从评论中我了解到,首先需要构建 lib1 才能使用 find_package。有没有办法(在cmake中)

  1. 构建 lib1,安装它,构建 lib2
  2. 还是使用 bash / python / etc 脚本更好?
4

0 回答 0