如何不在我的柯南包中包含源文件?
Posted
技术标签:
【中文标题】如何不在我的柯南包中包含源文件?【英文标题】:How to not include source files in my conan package? 【发布时间】:2021-12-19 14:18:00 【问题描述】:我们正在尝试使用 JFrog Artifactory CE 管理我们自己的 C++ 静态库。在不久的将来,这些库可以被第三方访问,所以我们不想在包中放置任何 .cpp 文件,我们只想将 .h 文件和编译后的库放在托管在 Artifcatory 上的柯南包中。
我通读了柯南官方指南https://docs.conan.io/en/1.3/creating_packages.html https://docs.conan.io/en/1.3/creating_packages/package_repo.html
但我找不到任何关于如何从配方中排除源文件的描述。 如果我没有在我的 conanfile.py 中指定 exports_sources 或 exports 我无法构建静态库,但如果我指定这些参数,柯南会将源文件放在 export/conan_sources.tgz 下当我执行 conan create 时自动生成。
如何在配方中不包含源文件的情况下创建柯南包?
【问题讨论】:
【参考方案1】:有两种不同的方法可以做到这一点,而不是使用exports_...
功能:
使用source()
方法检索任何tarball、git-clone 或获取源所需的内容。这可能需要一些身份验证,可以通过 env-vars 提供。通常使用conandata.yml
将数据放在那里,然后让source()
方法读取self.conan_data
。检查this docs。用于构建 ConanCenter 的 conan-center-index repo 中的配方使用这种方法。
如果配方与源代码位于同一存储库中,则使用 scm
组件来捕获 URL 并提交源,但不捕获源。如果 scm
代码在 auth 后面,则只有授权的开发人员才能看到源代码或从源代码构建。检查这个section of the docs about SCM
在这两种情况下,如果对源的访问受到限制,尝试从带有--build
的源构建包的非特权用户将失败。
【讨论】:
非常感谢您的回答。我会尝试两种方法并比较它们。以上是关于如何不在我的柯南包中包含源文件?的主要内容,如果未能解决你的问题,请参考以下文章
如何不在生成的命名空间中包含 Visual Studio 项目文件夹名称