问题标签 [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 回答
690 浏览

c++ - 我可以对我的柯南包的用户隐藏我的链接标志吗?

假设我有一个库作为包上传到conan中,它使用 OpenGL,因此GLCMakeLists.txt. 图书馆的用户是否需要再次明确链接到 GL?柯南是否提供了一种方法来跟踪它并将其包含在 中${CONAN_LIBS}

我在文档中找到的最接近的东西是 method package_info,您似乎可以在其中指定链接器额外选项,但我似乎没有在我的库中正确使用它conanfile.py。我尝试了所有:

但是如果在用户代码中我没有放置链接标志,它会引发对 GL 方法的“未定义引用”。

编辑:我在 linux mint 17 中工作。

0 投票
1 回答
1254 浏览

c++ - 如何在 Windows 中使用柯南的 SDL2

我是在 Windows 中使用柯南编译的新手,我正在努力使用 SDL2。

这里有一个使用柯南的 hello world,它在 linux 中编译并运行良好:

但在 Windows 中(使用 git for windows bash,不知道这是否重要)针对 SDL2 的链接失败,出现如下错误:

问题是:我怎样才能获得成功的链接?最好使用共享(SDL2.dll)。提前感谢大家,下面有一些细节,如果有人需要更多细节,请询问(例如,将整个编译放入pastebin)。

重现错误

这是我的 CMakeLists.txt

和我的 conanfile.txt:

这些是我的设置.conan/conan.conf(柯南安装正在使用的设置):

克隆后我正在使用这些行:

最后一个命令失败了(即使我可以看到它正在使用SDL2.lib):

更多警告,可能不相关

为 x86 构建的 sdl2?

像~200 个警告,比如下一个,带有 C 函数:

0 投票
0 回答
736 浏览

c++ - 如何将外部库包装在柯南包中,添加对构建为共享库的支持

我正在尝试将 Google 的 Gumbo 解析器包装为柯南包。我已经成功地支持了 Linux Mac 和 Windows,但是我在创建(和使用)它作为 Windows 中的共享库(.dll + .lib)时遇到了一些问题。

我目前的进度在这里。我决定绕过 Gumbo 的 autoconf 构建系统,提供一个 CMakeLists.txt,我在获取源代码时复制它。这样我希望也能完全支持Windows。

我对 Visual C++ 不是很熟悉,但据我了解,Visual C++ 与其他编译器的不同之处在于它默认不导出符号,而 Gcc 和 Clang 会导出所有内容。

这导致我的柯南包在某些情况下无法构建,因为在共享模式下它只是生成一个 .dll(并且没有相应的 .lib)。

尝试使用 CMake 的 GENERATE_EXPORT_HEADER 模块,但它没有什么帮助,因为那时我必须实际使用它在应该导出的方法中生成的宏。但我只是想包装图书馆而不必分叉和调整它。

另一种选择是使用.def 文件。这可能在这种情况下有效(导出的符号不多),但它对我没有多大帮助(如果我真的导出了我应该拥有的所有东西,更难测试,更难维护,对解决同样的问题没有太大帮助其他需要导出更多符号的情况)。

有推荐的方法吗?

0 投票
1 回答
1903 浏览

c++ - Poco C++ 与柯南依赖管理器的链接问题,我将如何解决它?

我一直在尝试在我的编程项目中使用 Poco 库,但出现链接错误。我的 C++ 文件在主函数中有一行代码,应该可以正常编译。

我的 C++ 文件:

我的 CMakeLists:

还有我的 conanfile.txt:

我生成的 conaninfo.txt:

现在,我用以下方式构建它rm -Rfv build conan{b,i}* && conan install . && mkdir build && cd build && cmake .. && cmake --build . -- VERBOSE=1; cd ..

我是不是编译错了,或者我怎样才能使它工作?

0 投票
1 回答
2503 浏览

c++ - 如何让柯南生成 FindXXX.cmake?

我一直在为我从事的项目之一使用的所有库创建带有柯南的软件包。我为每一个都创建了一个 conanfile.py,一切都很好。我为虚拟代码创建了一个 conanfile.txt,以确保一切都按预期工作。我跑了

柯南安装 .. --build=missing

这已经编译了所有的包。我可以在我的 CMake 文件中使用 ${CONAN_INCLUDE_DIRS} 和 ${CONAN_LIBS}。但是,我希望将柯南作为一种可选的做事方式,使用 Find_package(...) 作为获取库位置、链接和包含详细信息的一种方式。

所以我很想看到

柯南 0.6 新内容!现在柯南为 CMake find_package 提供了自动支持,而无需为每个包创建自定义 FindXXX.cmake 文件(柯南 0.5)。

所以我认为它应该工作。但是没有生成 FindXXX.cmake 文件。

这是我的一个 conanfile.py 作为 OpenMPI 的示例:

为什么没有创建 FineOpenMPI.cmake 文件?我怎样才能确保它被创建?

PS:如果我理解正确的话,不需要打包方法。

0 投票
1 回答
2348 浏览

conan - 如何用柯南打包相互依赖的库?

我有一个项目,我正在尝试使用柯南作为包管理器。该项目使用了大量的库,其中大部分是自给自足的。但是,其中一些依赖于另一个库。举一个具体的例子,假设我们有一个需要库 A 和 B 的项目 P。A 是自包含的,但 B 的编译和链接依赖于 A。

我可以轻松地为库 A 创建 conanfile.py。我可以为项目 P 创建一个 conanfile.txt。假设 A 和 B 尚未构建,我希望能够在 P 的构建目录中键入:

并让柯南下载,编译并安装库A,然后下载编译并安装库B,B对A有正确的引用。

编写B的conanfile.py的正确方法是什么?

0 投票
1 回答
999 浏览

gradle - 语言/平台/独立于构建的依赖管理器

我需要一个不依赖于特定语言或构建系统的依赖管理器。我研究了几个优秀的工具(Gradle、Bazel、Hunter、Biicode、Conan 等),但没有一个能满足我的要求(见下文)。我还使用了 Git 子模块和 Mercurial Subrepos。

Daniel Pfeifer 在 Meeting C++ 2014 的演讲中很好地描述了我的需求。总结这个依赖工具的目标(在链接视频的 @18:55 讨论):

  • 不仅仅是一个管理器
  • 支持预构建或源依赖项
  • 可以在本地下载或查找 - 没有不必要的下载
  • 使用多种方法获取(即下载或 VCS 克隆等)
  • 与系统安装程序集成 - 可以检查是否安装了 lib
  • 无需以任何方式调整源代码
  • 无需调整构建系统
  • 跨平台

我要补充的进一步要求或说明:

  • 适用于第三方和/或版本化依赖项,但也能够指定非版本化和/或共同开发的依赖项(可能由 git/mercurial 哈希或标记指定)。
  • 提供一种机制来覆盖指定的获取行为以使用我选择的一些替代依赖版本。
  • 无需手动设置依赖存储。我不反对将中央依赖位置作为避免冗余或循环依赖的一种方式。但是,我们需要简单地克隆一个 repo 并执行一些顶级构建脚本,该脚本调用依赖管理器并构建所有内容。
  • 尽管要求我不必修改我的构建系统,但显然某些顶级构建必须使用依赖管理器,然后将这些依赖提供给各个构建。该要求意味着各个构建不应该知道依赖管理器。例如,如果将 CMake 用于 C++ 包,我应该不需要修改它的 CMakeLists.txt 以使其特殊用于定位依赖项的函数调用。相反,顶级构建管理器应该调用依赖管理器来检索依赖关系,然后提供 CMake 可以以传统方式使用的参数(即 find_package 或 add_subdirectory)。换句话说,我应该始终可以选择手动执行顶级构建和依赖管理器的工作,而单个构建不应该知道其中的区别。

很高兴有:

  • 一种事后询问依赖管理器以查找依赖放置位置的方法。这将允许我创建 VCS 挂钩以自动更新共同开发的源代码库依赖项的依赖元数据中的哈希。(就像子模块或子存储库一样)。
0 投票
1 回答
3004 浏览

c++ - conan.io - 仅标头包

我正在尝试创建一个名为foo的简单演示头文件库,并需要另一个名为bar的库。

foo的结构是这样的:

foo/include/foo.hpp - 只是一个测试头文件...

foo/conanfile.py

使用以下命令导出:

酒吧/conanfile.txt

柯南安装失败说:

在此先感谢您的帮助!

0 投票
1 回答
1333 浏览

c++ - 如何在本地商店中安装软件包?

我正在使用柯南 0.16.0,但我不知道如何在本地商店中安装软件包。我的想法是创建一个配方,从配方中创建我想要的每个包,将它们安装在本地商店中,然后将它们上传到柯南服务器上,以使它们可供其他开发人员使用,而无需重新编译包,因为它们已经可用.

我实际上做什么:

  • 创建配方(conanfile.py 使用我的构建和导出方法)
  • 我使用将它安装在本地商店中conan export user/channel
  • 我检查我是否可以通过做来构建conan build
  • 我用mkdir mypackage,cd mypackageconan package ..
  • 然后,我不知道如何在本地商店中安装这个包(之后,我想将配方和包从本地商店上传到服务器)

我发现将我的包裹放在本地商店的唯一方法是拥有另一个需要前一个食谱的食谱,然后制作一个conan install --build. 我的第一个食谱包将被构建并将出现在我当地的商店中,但这种方式迫使我创建“虚假”​​需求来实现我的目标。

有什么方法可以为我想要的设置构建我的包,然后直接将它们安装在本地商店中?

0 投票
1 回答
533 浏览

c++ - Conan.io - 是否可以做类似于“python setup.py develop”的事情?

我正在开发一个 C++ 包“dep”,我想在项目“app 1”和“app 2”中使用它,同时开发“dep”、“app 1”和“app 2”。当前的工作流程包括调用

  • conan export在“深度”中,和
  • conan install --build在“应用程序 1”和“应用程序 2”中

对于“dep”中所做的每一个小改动。这个过程很乏味,并且每次都会导致“dep”的完全重建。

我知道柯南中的“test_package”功能,但它要求项目“app 1”和“app 2”与“dep”位于同一棵树中,这不是一个选项。

在 Python 的 setuptools 中,可以使用“python setup.py develop”来安装包,使任何更改立即可用于依赖于它的任何包。是否可以在柯南中做类似的事情,在构建“app 1”和“app 2”之前更新“dep”(如果有任何更改)?