gpt4 book ai didi

cmake - 柯南 C++ 错误 : Unable to find Package in remotes

转载 作者:行者123 更新时间:2023-12-02 19:35:39 52 4
gpt4 key购买 nike

我是柯南的新手。我尝试创建一个包并上传到远程(myconan-test)。该包位于本地缓存和远程缓存中。

本地打包

[user@dev build]$ conan search MyLib*
Existing package recipes:

MyLib/0.1@myself/Testing

上传包到远程

[user@dev build]$ conan upload MyLib/0.1@myself/testing -r=myconan-test
Uploading to remote 'myconan-test':
Uploading MyLib/0.1@myself/testing to remote 'myconan-test'
Compressing conan_sources.tgz completed [3 files]
Uploading conanmanifest.txt completed [0.24k]
Uploaded conan recipe 'MyLib/0.1@myself/testing' to 'myconan-test': http://xxx.xx.xx.xx:8081/artifactory/api/conan/conan-local

现在包位于远程

[user@dev build]$ conan search MyLib* -r=myconan-test
Existing package recipes:

MyLib/0.1@myself/testing

我创建了一个使用 MyLib/0.1 的消费者项目。但是当我这样做时: conan install .. 我遇到了如下错误:

MyLib/0.1: Not found in local cache, looking in remotes...
MyLib/0.1: Trying with 'conan-center'...
MyLib/0.1: Trying with 'myconan-test'...
ERROR: Unable to find 'MyLib/0.1' in remotes

我的 conanfile.txt 是

[requires]
MyLib/0.1

[generators]
gcc
cmake
txt

[imports]
bin, *.a -> ./bin # Copies all dll files from the package "bin" folder to my project "bin" folder

如果我将需求更改为:MyLib/0.1@myself/testing。它之所以有效,是因为它使用缓存中的包。我的问题是如何使用远程包。我的错误是什么?

提前谢谢您。

编辑---在了解如何通过添加 MyLib/0.1@myself/testing 来调用我的包之后。我可以从远程下载该软件包。但在构建步骤中,我遇到了错误:

[user@dev build]$ conan build ..
Using lockfile: '/home/user/Projects/consumer_MyLib/build/conan.lock'
Using cached profile from lockfile
conanfile.py: Running build()
-- Conan: called by CMake conan helper
-- Conan: Adjusting output directories
-- Conan: Using cmake global configuration
-- Conan: Adjusting default RPATHs Conan policies
-- Conan: Adjusting language standard
-- Conan: Checking correct version: 4.8
-- Conan: C++ stdlib: libstdc++
**CMake Error at CMakeLists.txt:23 (target_link_libraries):
Cannot specify link libraries for target "MyLib" which is not built by this
project.**

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.12)
project(consumer_MyLib CXX)

include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
conan_basic_setup()

add_executable(${project_name} example.cpp)
target_link_libraries(${project_name} ${CONAN_LIBS})

最佳答案

conanfile.txt中的包引用使用其名称、版本、用户和 channel 进行声明。用户和 channel 都用作命名空间,它们对于包引用很重要。除此之外,Conan 还支持没有命名空间的包名称,因此我们可以:

zlib/1.2.11
zlib/1.2.11@acme/stable
zlib/1.2.11@acme/testing

这里我们有3个包,都与zlib/1.2.11相关,但它们是不同的包。第一个没有命名空间,但它是一个有效的包名称,并且由 Conan Center Index 拥有。 。另外2个包由acme提供,但有不同的 channel 。 Conan 将每个包引用视为唯一,因此如果您在 conanfile.txt 中引用 zlib/1.2.11,它将仅查找第一个包。

现在回到您的情况,您创建了包 MyLib/0.1@myself/Testing,并且 Conan 搜索命令在使用正则表达式时返回了它,这是合理的,因为它是一个搜索命令。但是,在 conanfile.txt 中引用包时,您必须使用包后面的完整引用:

# conanfile.txt

[requires]
MyLib/0.1@myself/Testing

...

如果您仅查找 MyLib/0.1,Conan 会将其视为有效引用,并且不会完成您的引用。没有隐性扣除。

关于cmake - 柯南 C++ 错误 : Unable to find Package in remotes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61069339/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com