我正在开发一个使用LLVM和LLD的项目,它们存储在单独的远程存储库(https://git.llvm.org/git/llvm,https://git.llvm.org/git/lld)中。要构建 LLD,必须将其克隆到 LLVM 内部,LLVM 构建系统将检测它的存在并为其生成构建目标(文档)。恰恰:
LLD_CLONE_DIR = LLVM_CLONE_DIR/tools/lld
我想使用 git 子模块,并调用git submodule update --init --recursive
(在 CMake 配置期间)。
我发现 git 无法处理将一个子模块放入另一个子模块的问题,例如:
[submodule "contrib/llvm/tools/lld"]
path = contrib/llvm/tools/lld
url = https://git.llvm.org/git/lld
[submodule "contrib/llvm"]
path = contrib/llvm
url = https://git.llvm.org/git/llvm
我想过让我的构建脚本构造一个符号链接,但它在某些平台(Windows)上是不可靠的。如何构建目录以使 LLVM 构建系统满意,但我可以使用 git 子模块来克隆两个存储库?
更新:我已成功使用 CMake 的文件命令将 lld 源复制到正确的位置。不过,我仍然对更好的解决方案感兴趣。