我正在尝试创建 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)做接下来的事情:
我需要将所有这些库安装到 CMAKE_INSTALL_PREFIX,因为“3d lib”将在该目录中查找 zlib 和 libpng。到时候,当 '3d lib 的 CMakeLists.txt 将被处理时,所有以前的库都必须已经安装,否则 CMake 将无法找到 zlib 和 libpng。
那么有没有办法附加我的根 CMakeLists.txt 来做到这一点?当然,我可以为所有依赖项手动运行 CMake,但我认为 CMake 能够自主完成所有这些工作。
答案 0 :(得分:0)
add_subdirectory
确实是解决这个问题的方法。
当我第一次尝试时,我遇到了一些错误,并认为这是因为其中一些目标依赖于其他目标。但我错了,add_subdirectory
正是我所需要的。