【问题标题】:Include System Library with qmake on osx在 osx 上包含带有 qmake 的系统库
【发布时间】:2013-09-11 14:10:35
【问题描述】:

我有一个工作的 cmake 项目,我需要转移到 qmake。

一切正常,但包含一个名为 octomap 的库。

我在系统中安装了 (sudo make install) octomap

/usr/local/lib/liboctomap.a
/usr/local/lib/liboctomap.dylib

中的标题
/usr/local/lib/include/octomap/

可以说项目是如此组合:

foo.h

...
#include <octomap/OcTree.h>
octomap::OcTree tree(0.1);
...

foo.cpp

...
#include <octomap/OcTree.h>
using namespace octree;
tree.doSomething();
...

foo.pro

...
unix|win32: LIBS += -loctomap
INCLUDEPATH += /usr/local/include/
...

编译导致错误:未找到架构 x86_64 的符号,原因是

Undefined symbols for architecture x86_64:
  "octomap::OcTreeNode::createChild(unsigned int)", referenced from:
    octomap::OccupancyOcTreeBase<octomap::OcTreeNode>::updateNodeRe...[a very long stack]

这应该意味着 octomap 库尚未链接,我也尝试将其添加到项目中,使用 pkgconfig 并使用绝对路径。它们都导致相同的错误,而如果我在 cmake 项目中使用它,它工作正常。

【问题讨论】:

  • 您还需要设置库路径来搜索库。
  • 是的,我忘了说我也尝试过使用 LIBS += -L/usr/local/lib -loctomap 但它没有用:/

标签: c++ macos shared-libraries qmake


【解决方案1】:

这只是一个缺少的库,我还必须包含 octomath 库

unix|win32: LIBS += -L/usr/local/lib/ -loctomap
unix|win32: LIBS += -L/usr/local/lib/ -loctomath

希望对某人有用。

【讨论】:

  • 这与您的问题不太相符。你有没有提到什么?
  • 这就是我所知道的:/ 我知道这很奇怪,否则我会不问就解决:/ 我可能会删除这个问题,但我不知道是否最糟糕。缺少的库是我添加的库需要的,我只能这么说,我没有注意到缺少的符号不在octomap的界面中,而是在octomath中(我没有直接需要)。
  • 奇怪,但不要担心。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多