问题标签 [conan]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ssl - 如何使用 Jenkins Artifactory 插件避免柯南 SSL 用户身份验证错误?
我的公司是 Conan、Artifactory 和 Jenkins 的新手,但几个月前我们设置了一些测试管道脚本,并利用 Jenkins Artifactory 插件将一些 Conan 包发布到我们的 Artifactory 服务器。这些脚本现在因 SSL 认证失败而失败。
我们正在使用以下软件包:
- 詹金斯 v2.121
- Jenkins Artifactory 插件 v2.16.1
- Artifactory Pro v5.10.3
- 柯南 v1.3.3
当涉及到 Artifactory 配置时,我们的 pipline 脚本中的“打包和发布”阶段与此类似:
这段代码曾经工作过,但我相信当我们的 IT 部门将 Artifactory 切换到 HTTPS 访问时它停止工作了。现在,Jenkins 在尝试为我们的 repo 设置 Conan 用户时出错:
此行为不限于 Jenkins 访问;当普通用户尝试访问 Artifactory Conan 存储库时也会发生这种情况,但我们可以通过添加带有 Verify_SSL 为 False 的远程存储库来绕过它(在以下命令的末尾):
我相信柯南文档表明我们有两种选择:
- 通过
conan remote
命令禁用 SSL 验证(上) - 将服务器 crt 文件附加到 conan 主目录中的 cacert.pem 文件中。
不幸的是,当涉及到 Jenkins 管道脚本时,我无法弄清楚如何完成这两种解决方案。所以我的问题:
- 有没有办法使用
client.remote.add
Jenkins 管道脚本中的命令(或类似命令)禁用 SSL 验证? - 有没有办法通过 Jenkins 管道脚本包含必要的服务器证书(以便它自动添加到特定于工作区的柯南主目录)?
对于更简单的短期解决方案,选项#1 可能是首选,但我也想了解选项#2 是如何完成的。
谢谢阅读。
c++ - 覆盖柯南存储目录
我正在尝试conan
用于一个虚拟 C++ 项目(此处与语言无关),但我不喜欢弄乱用户的主目录。默认情况下,conan install
将使用~/conan/data
指定的~/conan/conan.conf
:
有没有办法将存储目录覆盖到本地目录?
我试图将一个[storage]
部分添加到我创建的配置文件中,但显然conan
不喜欢它(`ERROR: Error reading './locally' profile: ConfigParser: Unrecognized field 'storage')。
c++ - 连接柯南包和普通Qt目录
我在官方柯南教程中研究过创建包。我想为静态库(基于 CMake 的项目)创建自己的包。它支持Linux和Windows。但这取决于 Qt LTS 5.9x。CMakeLists.txt 包含对find_package
. 通常我通过
-DCMAKE_PREFIX_PATH=path_to_qt_cmake_modules
到 cmake 实用程序。柯南没有官方的 Qt 5.9 支持。在包安装期间传递 CMAKE_PREFIX_PATH
给的正确方法是什么?conan
artifactory - 无法收集对本地 Artifactory Pypi 存储库的补丁依赖项
在测试柯南时,我不得不“点安装”它。
由于我在完全离线的环境中工作,我的期望是我可以简单地
- 手动将https://github.com/conan-io/conan/blob/master/conans/requirements.txt中列出的所有依赖项部署到名为 myrepo-python 的本地 Pypi 存储库
安装柯南
pip3 install --index http://myserver/artifactory/api/pypi/myrepo-python/simple conan
这适用于某些软件包,然后由于对补丁 == 1.16 的依赖而失败
查看 Artifactory 日志,这表明即使我手动将 patch-1.16.zip(来自https://pypi.org/project/patch/1.16/#files)部署到存储库中,它也不存在于索引中。 ..
- .pypi/simple.html 文件不包含“补丁”条目(从 Artifactory UI 检查)
- 服务器日志 ($ARTIFACTORY_HOME/logs/artifactory.log) 显示正在添加到索引队列的文件,但不包含表明它已被索引的行
有谁知道为什么 patch-1.16.zip 没有被 Artifactory 索引?
这是在 Artifactory 5.8.4 上。
目前,我唯一的解决方法是将所有依赖项收集到本地路径中并将 pip3 指向它
c++ - 使用柯南和 cmake 选择文件
我有一个包含 2 个变体的包,其目录结构如下
使用conan,我试图fileSelection
用可能的值var1
和var2
. 使用 cmake,我尝试按以下方式进行选择:如果fileSelection
设置为var1
,var1/pkg_main.cpp
则应调用,否则var2/pkg_main.cpp
。
到目前为止,我已经fileSelection
在conanfile.py
现在我正在努力更新CMakeLists.txt
文件以根据fileSelection
. 像这样的东西:
[这是逻辑,而不是可运行的代码]
?? 如何将fileSelection
选项传递给 cmake;我在哪里以及如何实现和之间的切换var1
(var2
通过尝试在 CMakeLists.txt 中定义切换,我是否朝着正确的方向前进)?
cmake - Cmake无法读取文件说它找不到它,路径正确
我正在尝试在 CLion 项目中使用柯南。柯南生成一个conanbuildinfo.cmake
文件。在这个文件中,它试图读取另一个由 conan 生成的文件,并调用conaninfo.txt
.
它无法找到它,并且 cmake 打印以下错误:
如您所见,错误是说 cmake 找不到请求的文件。但它实际上可以,因为以下代码:
印刷 :
这是完全矛盾的,因为 cmake 正在查找文件,但在使用file
命令时却没有。
以前有没有人遇到过这个错误,如果有的话?有什么解决办法吗?我真的不明白我做错了什么,因为这个文件是由柯南生成的。
顺便说一句,我使用的是 cmake 3.6.2 版。
提前致谢。
windows - 克隆 git 存储库后更改行结束
我正在一台 Windows 和一台用作 gitlab-runners 的 GNU/Linux 机器上克隆一个存储库。当 runner 的工作开始时,代码已经被检出。
我需要这些文件在两个平台上具有相同的行尾。这是柯南的要求:将上传一些文件并且它们的校验和必须匹配,因此它们必须使用相同的行尾字符约定。所以让我们到处使用LF。
我的问题是我无法控制克隆的完成方式。我可以设置一些 gitlab-ci 变量来控制克隆的完成方式,例如 GIT_SUBMODULE_STRATEGY 等,但没有控制行结尾。因此,一旦克隆完成,我需要找到一种干净的方法来更改整个存储库 + 子模块的行尾。
显而易见的答案是使用git config --global core.crlf false
,但有几个问题:
- 行尾约束仅在构建柯南包时存在,所以我宁愿没有这个全局的,以防跑步者构建其他东西
- 如果从 runner 作业中调用它,它将不起作用(到那时代码已经被签出)
因为1
我尝试了一些东西git config core.crlf false
(没有--global
),但问题2
仍然存在。还有问题3
:
- 它不适用于子模块
我试图解决的问题2
:
git reset --hard
更改后autocrlf
不会更改行尾。git checkout .
更改后autocrlf
更改它们,但并非总是如此(在主仓库中工作,在子模块中不起作用)
所以我正在寻找一种从已经克隆的存储库中获取 LF 行结尾的方法,并且可以与子模块一起使用。
virtual-environment - conan.io:使用虚拟运行环境调用 exe
我有一个只包含 exe 文件(没有源代码)的 hello 工具。
你好工具结构:
conanfile.py
内容:
我已将 hello 工具导出到本地缓存:conan export-pkg . ToolHello/0.1@user/testing
. 这复制了所有 exe 文件local_cache/ToolHello/0.1/user/testing/package/hash/bin
。本地缓存中的 bin 如下所示:
我已经定义了一个工具集成项目,它只包含conanfile.txt
在工具集成项目中运行conan install .
并激活虚拟运行环境后,我只能调用它,helloRoot.exe
因为它位于 bin 目录中,但我无法执行 bin/bin/helloBin.exe
问题:我如何运行不直接位于local_cache/ToolHello/0.1/user/testing/package/hash/bin
,而是位于的 exe 文件local_cache/ToolHello/0.1/user/testing/package/hash/bin/directory
?
c - 使用 ninja 生成可执行文件的问题。使用带有柯南的软件包
我有下一个问题,当我打算生成我的应用程序的可执行文件时,系统会显示下一条消息:
对于 div,应用程序向我显示了错误的结果。
我可以创建包,也可以使用 Cmake 编译,系统不会显示错误,但是当我打算生成可执行文件时,系统会显示这些消息,我不知道为什么,所以我向您展示我的消费者文件,如 CMakeLists 和 conanfile。我希望你能帮助我!
CMakeLists。文本
柯南文件.txt
这是我用来创建包的 conanfile.py:
Compile.bat 只是为 MultDiv 创建文件 .obj,就像文件显示的那样,我正在打包 MultiDiv 和 SumRest。当我使用 gcc 命令编译并生成可执行文件时,我可以成功
git - conan.io:在消费者的工作目录中克隆包存储库
我有一个仅包含以下目录结构的源包:
pkg 的配方conanfile.py
如下所示:(打包时复制所有内容)
我的包被一个集成项目使用,该项目将 pkg 的源代码复制到其工作目录中。消费者的食谱conanfile.txt
如下所示:
在集成项目中安装依赖项时,pkg 的源代码会按预期复制到使用者的工作目录中。
消费者的工作目录:
这是我的用例:使用gitpkg
进行版本控制并上传到 GitHub。我想在消费者的工作目录中拥有整个 git 存储库,而不仅仅是 pkg 的源。
预期消费者的工作目录:pkg
???柯南是否可以在消费者的工作目录中克隆包存储库并签出正确的版本(例如,签出与所需版本相对应的提交/标签)而不是使用来自[imports] ., * -> ./packages/pkg
??? 例如,我在 中发现了一个错误pkg
,我想在消费者的上下文中更正它并提供错误修复。