jgs*_*ogo 5 c++ cmake dependency-management
我想知道如何管理外部项目的依赖项.假设我有三个项目,每个项目位于不同的存储库中:
每个项目都有其CMakeLists.txt.使用find_package并在CMake上定义路径我可以毫无问题地构建每个项目并安装它(我按照这个tuto来构建库的.cmake文件)
现在我正在尝试使这个过程尽可能简单,我正在介绍ExternalProject_Add宏,这样人们只需克隆可执行文件库并在CMake文件Lib1和Core的帮助下也会被下载,编译和链接.
问题是Executable和Lib1依赖于Core但我希望它只被克隆(和编译)一次.这是问题所在:
我不知道是否有文档化的方法来处理这种项目树,或者当Core被包含作为外部项目的依赖项时,我应该编写某种解决方法,以避免使用core-targets.cmake文件.
谢谢!
解
我意识到当使用ExternalProject_Add时,它会下载,构建和安装项目,因此,在install-folder中,我已经拥有了编译其依赖项所需的所有文件.
所以我可以按照这些步骤管理此问题(也适用于构建顺序):
我将向Executable添加两个便利项目,它们将包含在子文件夹中并使用ExternalProject_Add.
add_subdirectory( CoreWrapper ) # Use ExternalProject_Add here
add_subdirectory( Lib1Wrapper ) # Use ExternalProject_Add here
Run Code Online (Sandbox Code Playgroud)
现在,您可以将依赖项添加到Executable,以便在构建Executable之前安装所有内容,或者直接使用构建文件夹中包含的二进制文件。
| 归档时间: |
|
| 查看次数: |
3931 次 |
| 最近记录: |