是否可以在柯南缓存之外使用柯南包的二进制文件?



假设我有两个项目。Lib和App。App的conanfile.txt中有Lib。正常情况下,当执行应用程序的conan install依赖时,conan下载并编译Lib到~/.conan/data/。是否有可能将应用程序链接到当前正在开发的Lib(例如/home/path/to/code/Lib/cmake-build-release/lib/)?

我想这样做的原因是调试一个Lib的bug,其唯一已知的方法是通过使用App来复制。我希望能够快速添加std::cout到某些地方并逐步重新编译。重建整个柯南包,每次做conan install太长了。我在考虑一些hack,可以改变包括路径和链接路径。

是的,这是可能的,Conan使用与Pythonpip相同的方法:"editable"包。您可以在文档:可编辑包的这一节中了解更多信息。基本思想是:

  • cd libfolder定义为conan editable add lib/1.0
  • 您可以在那里构建lib,如conan install .+cmake ..conan build .
  • 你可以去App文件夹cd appfolder,做一个conan install .。您应该看到lib/1.0被标记为"editable"而不是来自柯南的藏身处你可以构建App,它会把你的依赖从本地的libfolder链接到lib
  • 您对libfolder所做的每一个更改,并在本地构建(增量构建),将直接用于App,而无需将createexport-pkg添加到Conan缓存。

可编辑特性依赖于项目布局的lib/1.0layout()方法中的正确定义。有内置的布局,如cmake_layout(self)

如果不同的包lib和app生成兼容的项目,如Visual Studio,可以在IDE中加入这些项目,并方便地同时开发和调试两个包。在这个c++意大利语会议的演示中有一个现场演示

最新更新