问题标签 [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.

0 投票
1 回答
553 浏览

conan - 什么是 ConanException:执行 conan install 命令时出现错误 32512?

我正在尝试从正在构建的包信息中执行源命令,但是在尝试安装它时出现以下错误。

我的 conanfile.py 如下

0 投票
1 回答
83 浏览

conan - 如何在柯南中更改虚拟环境的名称?

我正在为它制作一个包cmake/3.10.2,我希望每当我这样做时conan install .它都应该显示devenv而不是conanenv. 我不想手动更改activate.sh文件。有没有办法从柯南食谱中做到这一点。我virtualenv用作发电机。

0 投票
1 回答
106 浏览

cmake - 如何根据构建的目标限制 cmake 命令

我有一个生成多个可执行文件的 cmake 项目。我想将每个可执行文件打包在单独的 Docker 容器中,所以在 Dockefile 中,我只构建了我需要的目标:

这按预期工作,但我遇到了conan cmake integration的问题。安装是在调用 cmake 时完成的,而不是在实际构建期间完成 - 这意味着无论我要实际构建哪个目标,都会调用我的 cmake 文件中存在的所有 conan 安装调用 - 因此安装的软件包比必要的要多。

有没有办法让 cmake 调用取决于我实际想要构建的目标?

0 投票
1 回答
310 浏览

c++ - C++ 项目依赖项无法在特定的 macOS 机器上编译

我们有一个跨平台的 C++ 项目,它使用 CMake 构建系统,使用 Conan 进行依赖管理。

在特定 macOS 机器上构建时,构建失败(构建日志)。它不会运行相同版本的操作系统、CMake、Xcode 和 Conan(Conan 版本:macOS 10.14.3 (18D109) 和 CMake 3.14.0-rc2 上的 1.12.3)的不同 macOS 机器上失败。这是成功构建的示例

两个构建日志都是由构建机器上不存在的 ~/.conan 目录的构建生成的。

请注意,只有 iOS 目标的构建才会失败。同一盒子上的 macOS 目标构建良好,没有任何问题。

我试过了,没有效果:

  • 核弹~/.conan
  • 卸载并重新安装 Xcode

这是项目的 conanfile.py:

我可能会错过什么?

0 投票
1 回答
1499 浏览

c++ - 如何从 CMake 外部设置 CMAKE_TRY_COMPILE_TARGET_TYPE

tl;博士

给定一个CMakeList.txt我无法编辑的文件,我CMAKE_TRY_COMPILE_TARGET_TYPE可以STATIC_LIBRARY在配置该文件时设置为吗?

理想情况下,我可以通过环境变量来做到这一点,但如果这不可能,将我的值作为命令行参数传递也可以。

细节

我正在尝试构建一个柯南配置文件,允许我使用GNU Arm Embedded Toolchain进行交叉构建。

Conan 提供了一种机制来指定我希望 CMake 使用的编译器二进制文件和编译器 + 链接器标志,但我需要指定set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)以便 GNU Arm Embedded 通过 CMake 的编译器检查。

为了让我的交叉构建工具链正常工作,我有两个选择:

  1. 我想支持交叉构建的每个 CMake 文件都必须检查我们是否正在为嵌入式设备构建,如果是,则运行set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY). 这很烦人,因为它迫使所有项目都必须考虑嵌入。
  2. 或者,以某种方式传递CMAKE_TRY_COMPILE_TARGET_TYPE给 CMake 而无需编辑CMakeList.txt.

我想做2。

0 投票
1 回答
205 浏览

conan - 无需安装即可为柯南创建默认文件

我正在创建一个 docker 映像作为构建环境,我可以在其中安装项目并构建它。对于构建,我使用 cmake 和柯南。此图像的 dockerfile:

像这样的文件

在我调用之后创建

这样这些文件是在容器中而不是在图像中创建的。柯南的默认行为是设置

我想运行类似的东西

更改 libcxx 值,但此时此文件不存在。我发现柯南创建默认配置文件的唯一方法是安装一些东西。

目前我正在运行这个容器

但我需要删除-s compiler.libcxx=libstdc++11,因为它应该依赖于图像而不是由构建脚本修复。

有没有办法在图像中初始化柯南并在不安装任何东西的情况下编辑配置?目前我打算自己编写整个配置,但这似乎有点太多了,因为我想使用默认配置并且只更改一行。

0 投票
1 回答
792 浏览

android - 使用适用于 Android 的柯南配置文件构建 Poco C++ 库

我正在尝试在项目中使用 Poco C++ 库,但在为 Android 构建时遇到了一些问题。

我使用 Conan C++ 包管理器作为基础,但我将 Poco 源包含到项目中,并将其子目录包含到项目的顶级 CMakeLists.txt 中,以使过程更加透明。

如果我使用不依赖于 OpenSSL 的 Poco 库构建项目,它构建得很好。如果我添加 Poco 的 NetSSL,那么我会遇到一些与 math.h 相关的问题:

据我所知,这是由于路径中早先包含的仅限 C 语言的 math.h 为 libc++ math.h 。有谁知道如何解决这个问题?

实际上,当使用柯南依赖项和构建要求 android-ndk/r18@theodelrieu/testing 或 android_ndk_installer/ r19b@bincrafters/stable 在 Ubuntu 18.04 上。因此,我尝试在不使用 Conan 包的情况下构建 Poco 库和 OpenSSL。

提前感谢您的任何提示或想法!

这是我的安卓版柯南简介:

和根 CMakeLists.txt

PS:我是否使用了正确的方法,还是应该尝试以不同的方式包含和构建 Poco 库和 OpenSSL for Android?主要目标是用于开发和测试的 Android 和 iOS 设备以及本地 macOS 或 Linux。

0 投票
0 回答
1470 浏览

c++ - 通过 conan_cmake_run 调用时更改柯南导入命令的工作目录

我遇到了需要将柯南安装文件夹与导入根文件夹分离的情况。主要目标是在我希望能够测试运行 conan test tests Mylibrary/0.1@user/testing 的二进制文件时,拥有一个有效的 Visual Studio 打开文件夹解决方案

我的示例包由四个文件夹组成,src 包含源代码,生成可执行文件的示例 test_package 测试包是否正确链接,以及包含包的一些 gtest 的测试。

当我想开发包时,我在根文件夹中使用 Visual Studio 的打开文件夹功能。因为我想在 Visual Studio 中运行示例和测试时获得最新的更改,所以我在 CMakeSettings.json 中将 CMAKE_RUNTIME_OUTPUT_DIRECTORY 设置为指向 ${CMAKE_BINARY_DIR}/bin (我也可以在主 CMakeLists.txt 中设置它) )。现在在测试文件夹中驻留我的 conanfile.py,它将 gtest.dll 复制到根 bin 文件夹。

测试/conanfile.py

为了防止 conan_cmake_run 更改输出目录,我在 tests/CMakeLists.txt 中使用 NO_OUTPUT_DIRS 标志。

但是,当我调用 conan test tests MyLibrary/0.1@user/testing 时使用此设置,gtest 二进制文件被复制到构建文件夹之外......我所做的是复制当前文件夹中的 dll。

测试/conanfile.py

这是这个问题的一个丑陋的解决方案,因为复制 dll 两次。此外,我尝试将 INSTALL_FOLDER 设置为 ${CMAKE_BINARY_DIR},但随后 conan.cmake 抱怨(ln 388)${CMAKE_CURRENT_BINARY_DIR} 中不存在 conanbuildinfo。有什么优雅的解决方案吗?我错过了什么吗?

CMakeLists.txt

测试/CMakeLists.txt

测试/conanfile.py

在这两种情况下,预期的行为都是将我的 dll 放在 ${CMAKE_BINARY/DIR}/bin 文件夹中。

我认为可接受的解决方案如下:导入将仅包含一行

测试/conanfile.py

那么我应该能够使用 IMPORT_FOLDER 参数调用 conan_cmake_run 。例如

测试/CMakeLists.txt

但是,导入文件夹功能不存在,我必须找到一种使用 cmake 模拟这种行为的方法。

PS#1。我知道我可以使用 gtest 作为静态库,但我不想。这是一个概念证明示例,我可以集成 cmake conan 和 VS 打开文件夹,而不会对标准 conan 工作流程造成问题。

PS#2。完整代码可以通过以下方式下载:git clone https://jason5480@bitbucket.org/jason5480/externaldevices.git

0 投票
0 回答
364 浏览

c++ - 使用 Conan/CMake 编译 DLL 时出现的运行时问题在直接使用 Visual Studio 2017 编译时不存在。是否可以解决?

我想在 Conan/CMake(使用 Visual Studio 2017 编译器)的帮助下使用 DLL 构建。不幸的是,在不安装 Visual C++ 可再发行组件的情况下将 DLL 与另一个项目链接是不可能的,而直接从 Visual Studio 2017 生成的 DLL 是可能的。我想找到一种方法来生成不需要任何新依赖项的 DLL去工作。有解决办法吗?

我已经尝试修改编译器的选项:/MD、/MT、/MDd、/MTd,我尝试使用编译器选项来考虑运行时:/clr、/ZW 我尝试使用链接器选项来获取运行时考虑:/WINMD

0 投票
0 回答
545 浏览

nexus3 - 搜索不适用于 nexus-repository 柯南

我有一个安装了柯南插件的关系服务器。我可以使用柯南客户端连接到 nexus 远程。除了柯南搜索之外,所有命令似乎都可以正常工作。如果我尝试上传它正在工作的东西:

我得到以下输出,这一切都很好

其中 nxrm-conan-hosted 的设置如下:

但是,当我搜索一些东西时:

我得到以下404:

我在搜索中发现了这个问题: https ://github.com/sonatype-nexus-community/nexus-repository-conan/issues/13

似乎插件中尚未实现搜索功能。我对插件的语言并不完全熟悉。在这方面,我想请求一些关于如何通过创建必要的路由来设置搜索端点的逐步说明,这些路由的放置位置,与nexus服务器的通信以发送搜索查询等等。