如何将外部库包含到 omnetpp Makefile

How to include external library to omnetpp Makefile

我是 omnetpp 的新手。在我的源文件中,我包含 zmq.h header 并且我可以使用 opp_makemake --make-so -f --deep
成功制作 Makefile 接下来运行ning make也不报错

Creating shared library: out/gcc-release//libtictoc_r.so

所以我期待 zmq 库已经链接。 然而,当我 运行

opp_run -l tictoc_r

我明白了

<!> Error: Cannot load library 'libtictoc_r.so': ./libtictoc_r.so: undefined symbol: zmq_strerror

因此我怀疑 zmq 库是否链接正确。
顺便说一句,zmq 的 header 文件位于标准目录中,即 find /usr/include/ -name "*zmq*"
returns

/usr/include/zmq.h
/usr/include/zmq_utils.h
/usr/include/zmq_addon.hpp
/usr/include/zmq.hpp

我该如何解决我的问题?

使用头文件并不能说明实际共享对象文件的位置。您必须将 -lzmq(或调用任何库)添加到项目中的链接器标志。

最简单的方法是在源文件夹(生成Makefile的地方)中创建一个makefrag文件并添加

LDFLAGS += -lzmq

给它。生成的 Makefile 将包含 makefrag 文件,并且可以将其添加到链接器标志中。 (samples/sockets 示例也这样做)

您还可以在 IDE 的项目属性对话框中添加所需的额外链接器标志。