如何从 CMake 构建和安装依赖项

时间:2021-05-29 14:30:57

标签: cmake

我正在尝试创建 CMakeLists.txt,它可以构建许多其他项目。我的目标是简化构建特定项目的一些库。

我有一个名为“dependencies”的目录,里面有 CMakeLists.txt,里面有一些源代码目录。结构如下:

dependencies/
├── zlib   (source code directory with it's own CMakeLists.txt)
├── libpng (source code directory with it's own CMakeLists.txt)
├── 3d lib (source code directory with it's own CMakeLists.txt, that uses zlib and libpng)
├── CMakeLists.txt

此时我在根 CMakeLists.txt 中有下一个内容:

cmake_minimum_required (VERSION 3.15)
project(myProject)

set(CMAKE_INSTALL_PREFIX ${CMAKE_CURRENT_SOURCE_DIR}/../lib)
set(CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../lib)
#### NEED TO ADD HERE ####

我想为所有这些子项目(zlib、libpng 和 3d lib)做接下来的事情:

  1. 使用 CMake 配置项目;
  2. 在以下两种配置中构建此项目:调试和发布配置;
  3. 运行安装。

我需要将所有这些库安装到 CMAKE_INSTALL_PREFIX,因为“3d lib”将在该目录中查找 zlib 和 libpng。到时候,当 '3d lib 的 CMakeLists.txt 将被处理时,所有以前的库都必须已经安装,否则 CMake 将无法找到 zlib 和 libpng。

那么有没有办法附加我的根 CMakeLists.txt 来做到这一点?当然,我可以为所有依赖项手动运行 CMake,但我认为 CMake 能够自主完成所有这些工作。

1 个答案:

答案 0 :(得分:0)

add_subdirectory 确实是解决这个问题的方法。

当我第一次尝试时,我遇到了一些错误,并认为这是因为其中一些目标依赖于其他目标。但我错了,add_subdirectory 正是我所需要的。