什么是在与库一起玩时找到要链接的必需库的快速方法

问题描述 投票:0回答:1

在使玩具可执行文件与另一个库一起玩耍时,找到链接所需的必要库的好方法是什么?

我将从compile_commands.json文件(由CMake生成)中获取适当的编译命令,但我仍然必须手动找出需要可执行文件链接到的库。


例如:如果我有一个名为main.cpp的文件:

#include <some_cool_library.hpp>
#include <iostream>

int main() {
    some_cool_library::some_cool_type obj{"35"};
    return 0;
}

我将从使用compile_commands.json的项目中生成的some_cool_library.hpp文件中获取适当的编译命令(这样我就可以将正确的-I标志传递给编译器,而不必考虑全部)。

然后我将其编译(进行适当的编译命令修改):

/usr/bin/clang++ -DBOOST_ALL_NO_LIB -DBOOST_ASIO_HAS_STD_CHRONO -DHAS_ZLIB -DWEBSOCKETPP_STRICT_MASKING -I<some-dir0> -I<some-dir1> -I<some-dir2> -isystem /usr/local/include  -Wall -Wno-invalid-partial-specialization -O3 -DNDEBUG -pthread -std=gnu++17 -o prog /home/user/main.cpp && ./prog

最后,我将获得一些输出,这些输出会吐出一堆链接器错误,在这些错误中,我必须手动检查每个链接器错误并链接适当的库。有没有更好的方法来找到这些库?

c++ cmake linker linker-errors libraries
1个回答
0
投票

学习如何使用库的标准方法是阅读该库的文档。

在某些情况下,pkg-config可用于获取必要的编译器和链接器标志。这不能保证能正常工作,但是如果CMake似乎自动将库作为依赖项处理,则有一定的机会可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.