conan 包管理器:全局指定构建文件夹

问题描述

认情况下(在 Linux 上),conan 在 /home/user/.conan/data/package/version/_/_/build/hash 下创建一个 build 文件

我想使用 /tmp/conan/package/version/hash/ 之类的东西作为构建文件夹。

对于单个包,这可以通过 -bf 选项轻松实现。但是,当构建了许多包时,这会变得乏味。有没有办法在配置设置中将构建文件夹全局设置到 /tmp 下的某个位置?

解决方法

无法仅将构建文件夹与数据分开,但您可以设置 Storage Path

如果您也想放弃测试包构建文件夹,请使用 CONAN_TEMP_TEST_FOLDER 环境变量。

构建文件夹背后的想法是将源代码与构建的缓存分开。如果您正在使用 conan create 命令开发一个新配方,您可能需要对您的配方进行许多更改,但您不想为每个新的执行下载相同的源,因此您保留源文件夹,并且只重新创建构建文件夹。

如果你真的想在构建包后删除构建文件夹,你可以使用Hooks,例如:

from conans import tools

def post_package(output,conanfile,conanfile_path,**kwargs):
    output.info("BUILD FOLDER TO BE REMOVED: %s" % conanfile.build_folder)
    tools.rmdir(conanfile.build_folder)