我在使用 Poco 库时遇到问题。我需要一个简单的解决方案来使编译更容易。 Poco 库是否有任何
pkg-config
文件可以将其使用到我们的 make 文件中?或者有其他解决方案吗?
目前我使用 Ubuntu GNU/Linux。
我正在尝试在我的应用程序中使用 poco 库,但我不知道如何将 Poco 库链接到它。事实上,我不知道该应用程序应该链接多少个库。我想知道是否有一种简单的方法可以做到这一点,例如使用
pkg-config
文件,就像我们使用 gtkmm
一样,例如:
g++ prog.cc `pkg-config --gtkmm-2.4 --libs --cflags` -o prog
并且
pkg-config
程序将适当的库和头文件附加到我们的命令中。
我不认为 Poco 附带任何预打包的“.pc”文件,但如果您喜欢这种方法,您应该能够轻松创建自己的文件并将它们粘贴到系统上的 lib/pkgconfig 目录中。
我不知道您在系统上安装 Poco 的确切位置,因此您可能需要执行“查找”才能找到您的文件。 要编译,您需要指定 poco 头目录、poco 库目录和各个 poco 库。所以类似:
g++ -I<path-to-poco-include-dir> -o prog prog.cpp -L<path-to-poco-lib-dir> -l<some-poco-lib> -l<another-poco-lib>
例如:
g++ -I/usr/local/Poco/include -o prog prog.cpp -L/usr/local/Poco/lib -lPocoFoundation -lPocoNet -lPocoNetSSL -lPocoUtil -lPocoXML
有 20 个左右不同的 poco .so 文件,因此您显然需要链接正确的文件。 Poco 使这变得非常简单,因为库名称符合文档部分 - 例如util 的东西在 libPocoUtil.so 中。 如果您还编译了库的调试版本,它们将以“d”结尾 - 例如libPocoUtild.so
再次强调,一旦找到所有文件,您可能更愿意创建自己的 poco.pc,因为您应该拥有创建它所需的信息。
在 ubuntu 16.04 上,您首先需要相应地安装 Poco 库,具体操作如下:
sudo apt install libpoco-dev
然后您需要向链接器添加正确的指令,这取决于您拥有的包含内容,例如,如果您使用过
#include <Poco/Net/MailMessage.h>
您将需要以下开关:
-lPocoNet -lPocoFoundation
ej:
g++ main.cpp -Wall -std=c++11 -o pocotest -lPocoNet -lPocoFoundation
这是一个在使用
vcpkg
构建静态库后对我有用的命令行:
g++ --verbose -std=c++17 \
-I $(pwd)/vcpkg/installed/x64-linux/include \
-I $(pwd)/base \
-D POCO_STATIC \
main.cpp \
Application.cpp \
Database.cpp DatabaseRecord.cpp \
base/HttpServer.cpp \
base/UtilityClasses.cpp \
base/Utilities.cpp \
-L./vcpkg/installed/x64-linux/lib \
-lPocoEncodings -lPocoJSON -lPocoNet -lPocoXML -lPocoUtil -lPocoFoundation \
-lsqlite3 -lcurl -lexpat -lturbojpeg -lminiz -lpng -lz -lpcre2-posix -lpcre2-8 -lpcre2-16 -lpcre2-32 -lssl -lcrypto \
-o myapp