如何使CPMAddPackage() / CPMFindPackage()使用预构建的依赖项?

How to make CPMAddPackage() / CPMFindPackage() use pre-built dependencies?

提问人:nevermind 提问时间:11/17/2023 最后编辑:nevermind 更新时间:11/17/2023 访问量:18

问:

当我用来添加依赖项(&)时,每次我覆盖我的项目源文件时,它都会重建依赖项。我有和作为依赖项,构建需要花费大量时间。CPMAddPackageJUCEgoogletestJUCEgoogletestJUCE

此外,当我更改项目的目录结构时,(之前依赖项在我的项目目录中,之后依赖项是与我的项目目录的同级目录)再次开始下载/克隆。CPMAddPackageJUCEgoogletest

如何使用预先构建的依赖项,而不是在每次覆盖项目源文件时都让它构建依赖项?CPMAddPackage

另外,当我开始时,依赖项在我的项目根目录下,在一个目录中,现在当我从根目录中取出依赖项目录(现在是目录、和是同级目录)并将键设置为值(for)时,再次开始下载/克隆。libsMyProjectJUCEgoogletestSOURCE_DIRCPMAddPackage${CMAKE_CURRENT_SOURCE_DIR}/../JUCEJUCECPMAddPackageJUCE

我怎么能确定当我添加为另一个项目的依赖项时,不会再次克隆整个存储库?JUCECPMAddPackageJUCE

我也在文档上阅读过,但没有关于如何使用它的实际说明,我也只用了几次。CPMFindPackageCPMCMake

我查看了文档,他们建议使用 (每次构建) 和 's (包括预构建)。这对我来说似乎都很好,现在,如果并且这么好,我为什么要费心使用?JUCEadd_subdirectoryJUCECMakefind_packageJUCEfind_packageFetchContentCPMAddPackage

我需要一些可以:

if (dep_built) { go on with the rest of CMakeLists.txt }
else if (dep_downloaded) { build dep }
else { download and build dep }

提前致谢。

编辑:我如何使用我从网站下载的发行版而不是克隆?CPMAddPackageJUCEJUCEJUCE repo

C++ CMake

评论


答: 暂无答案