存储库清理

Mar*_*zzi 16 cmake conan

我正在向我的 CMake 项目添加 Conan 支持。我按照同一个存储库教程中的食谱和来源进行操作,最终得到了预期的包。探索本地存储库文件夹时,我发现我的源文件被复制到 3 个不同的文件夹(sourcebuildexport_source)中,因此即使项目很小,存储库也会快速增长。

有没有办法在包创建后清理重复源的存储库文件夹(仅保留“从源构建依赖项”所需的文件夹)?

dro*_*dri 23

当然,您可以使用命令从缓存中删除内容conan remove。在这种情况下,您可能想要执行以下操作:

conan remove "*" -s -b -f
Run Code Online (Sandbox Code Playgroud)
  • *匹配本地缓存中的所有包
  • -s删除源文件夹
  • -b删除构建文件夹
  • -f不要求确认

与 conanfile.py 一起存储在缓存中的源无法删除,因为它们与 conanfile 一起存储,以便在conan install --build完成后能够从源重建。

  • 不,这是不可能的,即使食谱可以访问“self.source_folder”,“self.build_folder”等,它也会违反所有解耦和并发性,例如,如果您正在并行构建多个配置相同的包(例如调试/发布),并且其中一个决定删除源文件夹,那么它将与仍在构建和使用该源的另一个发生冲突。即使不进行并发安装,如果您需要顺序构建不同的配置,它们也会慢得多。如果需要,您可以使用“no_copy_source”来避免 1 个源副本。 (3认同)