如何不在我的柯南包中包含源文件?

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_sourcesexports 我无法构建静态库,但如果我指定这些参数,柯南会将源文件放在 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 的源构建包的非特权用户将失败。

【讨论】:

非常感谢您的回答。我会尝试两种方法并比较它们。

以上是关于如何不在我的柯南包中包含源文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何从节点包中包含 css/js 文件?

如何在 HTML 文件中包含 npm 包?

如何不在生成的命名空间中包含 Visual Studio 项目文件夹名称

即使在我的.pro文件中包含“testlib”包(用于qWait())之后,如何避免Qt应用程序中的控制台窗口?

如何“运行”主包中包含多个文件的项目?

如何在我的新CSPROJ类库中包含带有本机dll的NuGet包?