【问题标题】:How to build and install dependencies from CMake如何从 CMake 构建和安装依赖项
【发布时间】:2021-08-17 12:11:41
【问题描述】:

我正在尝试创建 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 能够自主完成所有这些工作。

【问题讨论】:

  • 我在 Windows 上这样做,为此项目使用 Visual Studio 编译器。
  • 呜呜add_subdirectory?
  • 感谢您的回复)经过我的研究,这确实有效。

标签: cmake


【解决方案1】:

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

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

【讨论】:

  • 专业提示:做add_subdirectory(... EXCLUDE_FROM_ALL) 这样你就不会编译你不需要的东西。
猜你喜欢
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 2013-06-30
相关资源
最近更新 更多