如何使CMake在后续运行时跳过外部项目?
我正在使用CMake进行一个项目,在这个项目中我想捆绑Clang。我使用ExternalProject\u Add从源代码构建clang。然而,由于Clang和LLVM是巨大的,一个没有任何改变的如何使CMake在后续运行时跳过外部项目?,cmake,Cmake,我正在使用CMake进行一个项目,在这个项目中我想捆绑Clang。我使用ExternalProject\u Add从源代码构建clang。然而,由于Clang和LLVM是巨大的,一个没有任何改变的make需要45秒 有没有一种方法可以让CMake只构建一次ExternalProject,然后甚至不检查在后续运行中是否有任何更改(如果已经成功构建了它)?使用ExternalProject\u Add()的最佳方法是将您的项目结构为一个完整的项目。这意味着您的顶级项目(“superbuild”)不生
make
需要45秒
有没有一种方法可以让CMake只构建一次ExternalProject,然后甚至不检查在后续运行中是否有任何更改(如果已经成功构建了它)?使用
ExternalProject\u Add()
的最佳方法是将您的项目结构为一个完整的项目。这意味着您的顶级项目(“superbuild”)不生成任何实际代码,而是只包含ExternalProject\u Add
调用。您的“真实”项目将添加为这些“外部”项目之一。这允许您使用所有依赖项、顺序等设置superbuild
工作流程如下所示:
您是否使用推荐的方法,即您真正的项目只是另一个
ExternalProject\u Add
?不,我不知道这是推荐的方法。我不明白为什么在中没有提到这一点,但这听起来是个好主意,而且确实值得推荐。@Angew因此,我制作了一个超级构建,将Clang添加为ExternalProject,并将我自己的项目添加为依赖Clang的ExternalProject。即使在我运行make myproject
时,CMake也会检查Clang是否是最新的,这与以前花费的时间一样长。您是在顶级生成目录(错误)中运行make myproject
,还是在“外部”子项目(正确)的生成目录中运行?