为什么CMake无法链接Libbitcoin C ++?

时间:2019-11-26 20:49:30

标签: c++ cmake

我最近安装了CMake,以便编写代码以在C ++中使用Libbitcoin,但是我很难过,我试图在GitHub here上构建示例代码。它令人讨厌。我无法在CMake中正确链接库,这是我的代码。我读过,有人说我应该尝试Autoconf,但是我不知道如何启动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文字: enter image description here 请感谢所有帮助,我无所不能。

1 个答案:

答案 0 :(得分:0)

在不知道安装细节的情况下很难确保,但是看来您的包含目录路径可能与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)