使用 CMake 仅构建 git 子模块存储库的一部分
Posted
技术标签:
【中文标题】使用 CMake 仅构建 git 子模块存储库的一部分【英文标题】:Build only part of a git submodule repository with CMake 【发布时间】:2020-06-29 14:18:21 【问题描述】:我有一个带有子模块 another_repo
的 C++ 项目:
.
├── CMakeLists.txt
├── ext
│ └── another_repo
│ └── CMakeLists.txt
├── include
└── src
我想只构建another_repo
的一部分。也就是说,我需要一个新的、定制的CMakeLists.txt
来构建another_repo
,而不是使用原来的./ext/another_repo/CMakeLists.txt
。
但是如何在根目录./CMakeLists.txt
中做到这一点呢?
【问题讨论】:
您可以添加另一个目标来构建another_repo
的仅部分。
@Waqar 感谢您的提示。我的直截了当没有明白你的意思。如果您不介意,能否将您的评论扩展为答案?
查看答案
【参考方案1】:
如果您只想构建another_repo
的一部分,那么只需创建一个只构建您想要的部分的新目标。
例如,another_repo
有以下文件:
another_repo/
│── a.cpp
│── b.cpp
│── c.cpp
而您只想构建 a.cpp
和 b.cpp
(假设它们不依赖于 c.cpp
)。
在你的根目录CMakeLists.txt
:
...
set(ANOTHER ext/another_repo)
add_library(part_of_another_repo $ANOTHER/a.cpp $ANOTHER/b.cpp)
#or add_executable() if it is an executable
...
【讨论】:
感谢您的回答。对,看来是正确的做法。以上是关于使用 CMake 仅构建 git 子模块存储库的一部分的主要内容,如果未能解决你的问题,请参考以下文章
CMake - 链接器错误与静态yaml-cpp作为git子模块