【问题标题】:qmake doesn't add libraries from .pro file to the makefileqmake 不会将 .pro 文件中的库添加到 makefile
【发布时间】:2013-12-10 14:19:47
【问题描述】:

我尝试使用 qmake 构建一个 QT 项目。为此,我需要 boost 库。

LIBS += -L/usr/lib/ \
 -lboost_system \
 -lboost_filesystem

但是运行qmake后,这些库并没有添加到makefile中:

LIBS = $(SUBLIBS) -L/usr/X11R6/lib64 -lQt5MultimediaWidgets
-L/build/buildd/qtmultimedia-opensource-src-5.0.1/lib -L/usr/lib/x86_64-linux-gnu
-L/usr/lib/x86_64-linux-gnu/x86_64-linux-gnu -lQt5OpenGL -lQt5Multimedia -lpulse
-lQt5Widgets -lQt5Network -lQt5Gui -lQt5Core -lGL -lpthread

正如预期的那样,链接器会打印出许多错误,例如

/usr/include/boost/system/error_code.hpp:214: error: undefined reference to boost::system::generic_category()

如果您想查看整个 .pro 文件,请转至 https://raw.github.com/francisengelmann/FabScan100/master/qtTest/qtTest.pro

opencv 也有类似的问题。有谁知道如何解决这个问题?

【问题讨论】:

  • 我认为这不会有什么不同,但您在 .pro 文件中重复了一些行。
  • 我确实也意识到了这一点,但正如你所说,删除这些多行并没有什么不同。
  • 您是否尝试过完全删除构建文件夹并重新构建项目?
  • 是的,我删除了文件夹并在qt creator中运行了“build project”,但错误是一样的。
  • 您使用的是哪个版本的 qmake?我在 Mac OS X 上通过 qmake (3.0) (Qt 5.1.1) 运行了您的项目文件,但我无法在这里重现该问题 — MakefileLIBS 包括 OpenCV 和 Boost 以及点云库,正如预期的那样。

标签: c++ linux qt opencv qmake


【解决方案1】:

更改.pro 文件后,您需要再次运行qmake。仅删除构建目录是不够的。

您还确定您的 qmake 目标是 linux-g++ 吗? INCLUDEPATH 是否有效?

【讨论】:

  • 在那之后我确实运行了 qmake。寻找我对另一个答案的评论,当我在家中有构建环境时,我会测试这些东西。
  • 检查你的 qmake 使用的规范。如果您使用的是 64 位系统,则很可能您需要一个 linux-g++* 规范(带有星号)。或者只使用 linux-* 规范,因为你的头文件和库不是 gcc 特定的。
  • 非常感谢,这就是问题所在。我的 qmake 目标是 linux-g++64。使用 linux-g++ 效果很好。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
相关资源
最近更新 更多