【问题标题】:Why does CMake Fail to Link Libbitcoin C++?为什么 CMake 无法链接 Libbitcoin C++?
【发布时间】:2019-11-26 20:49:30
【问题描述】:

我最近安装了 CMake,以便编写代码以在 C++ 中使用 Libbitcoin,但我遇到了困难,我试图在 GitHub here 上构建示例代码。它讨厌的人一直很糟糕。我无法在 CMake 中直接链接库,这是我的代码。我读过,人们说我应该尝试 Autoconf,但我什至不知道如何开始,因为我对 Autoconf 一无所知。我有 CMake 3.16,并使用 brew 安装了 Libbitcoin,但在 /usr/local/include 中为库创建了别名,我在 Mac OS X 10.15 上。 CMake 运行良好,但在运行“make”时,它会响应:

Scanning dependencies of target CreateAddr
main.cxx:1:10: fatal error: bitcoin/bitcoin.hpp: No such file or directory
1 | #include <bitcoin/bitcoin.hpp>
|          ^~~~~~~~~~~~~~~~~~~~~

这是我的 CMake 文本: 感谢所有帮助,我已经迷失了。

【问题讨论】:

  • ${btcLib} 的值是在哪里设置的。它没有设置在文本的图片中。另外,您为什么要发布文字图片而不是文字本身?
  • 错误信息意味着您的所有包含目录都不包含标题bitcoin/bitcoin.hpp
  • 我希望/usr/local/include 在默认搜索路径中,所以/usr/local/include/bitcoin 中没有bitcoin.hpp 文件?
  • /usr/local/include/bitcoin 的链接器路径似乎错误。

标签: c++ cmake


【解决方案1】:

如果不知道您的安装细节就很难确定,但您的包含目录路径似乎与main.cxx 中为标头指定的路径重叠。 include_directories() 调用告诉编译器包含此目录中的标头:

/usr/local/include/bitcoin

然后,在main.cxx 中,您将包含带有bitcoin/bitcoin.hpp 的文件。结合这些表明文件位于此处:

/usr/local/include/bitcoin/bitcoin/bitcoin.hpp

错误表明找不到标头,所以也许您打算在此处找到它:

/usr/local/include/bitcoin/bitcoin.hpp

在这种情况下,只需从 main.cxx 文件中删除相对目录路径,如下所示:

#include <bitcoin.hpp>

另外,您希望正确链接到您的libbitcoin 库。不推荐使用link_directories()。相反,您可以直接在对target_link_libraries() 的调用中指定libbitcoin 库的完整路径。该库可能不在/usr/local/include/bitcoin 中。通过这些更改,CMake 中的最后几行看起来更像这样:

include_directories(/usr/local/include/bitcoin)
add_executable(CreateAddr main.cxx)
target_link_libraries(CreateAddr PUBLIC /your/path/to/libs/libbitcoin.so)

【讨论】:

  • 谢谢,我更改了代码以删除包含目录中多余的非必要比特币。它现在可以正确构建,但无法成功运行 make。它给出了 20 个错误。
  • @DatagramDigger 好的,很高兴它有帮助。有哪些错误?如果它们与您之前发布的错误无关,则可能值得创建一个新问题帖子。
猜你喜欢
  • 2013-06-08
  • 2020-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-26
  • 2015-02-09
相关资源
最近更新 更多