Cmake 使FetchContent与find_包兼容

Cmake 使FetchContent与find_包兼容,cmake,Cmake,我尝试添加我的项目在CMake上编译所需的所有依赖项。这将减少其他人在第一次编译项目时的开销 为了实现这一点,我尝试使用FetchContent。到目前为止还不错,当我链接生成的目标时,这根本不是问题。但现在我有了一个依赖于annother lib的库,它不作为子模块包含。lib尝试查找find_包上的依赖项。我怎样才能找到图书馆 到目前为止,我尝试的是: 添加别名目标并定义find_包设置的所有变量 将LIB_DIR设置为build目录并调用find_package 下面是我的CMake代

我尝试添加我的项目在CMake上编译所需的所有依赖项。这将减少其他人在第一次编译项目时的开销

为了实现这一点,我尝试使用FetchContent。到目前为止还不错,当我链接生成的目标时,这根本不是问题。但现在我有了一个依赖于annother lib的库,它不作为子模块包含。lib尝试查找find_包上的依赖项。我怎样才能找到图书馆

到目前为止,我尝试的是:

  • 添加别名目标并定义find_包设置的所有变量
  • 将LIB_DIR设置为build目录并调用find_package
下面是我的CMake代码的最短片段:

cmake_minimum_required(VERSION 3.14)

find_package(ZLIB)
if (NOT ZLIB_FOUND)
    FetchContent_Declare(zlib_fetch
        GIT_REPOSITORY https://github.com/madler/zlib.git
        GIT_TAG cacf7f1d4e3d44d871b605da3b647f07d718623f
        )
    FetchContent_MakeAvailable(zlib_fetch)
    set(ZLIB_DIR ${zlib_fetch_BINARY_DIR})
    message(${zlib_fetch_BINARY_DIR})
#simulates the call in the other library:
    find_package(ZLIB REQUIRED) 
endif (NOT ZLIB_FOUND)

你找到解决办法了吗?我目前也遇到了同样的问题。覆盖
find\u包
功能的黑客攻击相当多。但是kitware已经开始将Fetch_内容集成到CMake中