我们在使用qmake在Ubuntu Linux上构建C++软件时遇到了一个问题。
问题是:我们使用一些库,例如OpenCV,它可以在一个系统中具有不同的版本。
qmake自动将-L/usr/lib或-L/usr/lib/x86_64-linux-gnu添加到g ++参数中,以及后面的LIBS变量的内容。
因此,与OpenCV的不同版本有冲突,系统版本被使用,但我们需要定制的版本,位于我们的构建树中。 是否有任何方法来改变-L或其他东西的libs顺序来解决这个问题?如何在qmake中设置libs命令?
回答
有两个组成部分,以这样做:
首先,您需要确保正确地包括他们在你的.pro文件。用类似(这是从我目前的项目)这样做:
LIBS += L${OPENCV_HOME}/lib \
-lopencv_core \
-lopencv_highgui \
您可以用任何路径替换环境变量。我发现使用像这样的环境变量很方便,因为您还需要标题包括:
INCLUDEPATH += $$(OPENCV_HOME)/include/opencv2 \
$$(OPENCV_HOME)/include/opencv \
$$(OPENCV_HOME)/include
这使您可以创建项目并正确构建它们。
但是,当您尝试运行它们时,由于您的应用程序发现错误的库(从系统库(如您所说的)),您可能会遇到各种问题 - 您需要正确设置LD_LIBRARY_PATH变量。在这种情况下,我有一个启动脚本,包含(你可以在你的用户配置文件或其他地方这样做):
export LD_LIBRARY_PATH=${OPENCV_HOME}/lib
,然后看起来是(以及其他)首先在LD_LIBRARY_PATH位置,之前的系统库。
这似乎并没有帮助抑制了-L/usr/lib目录系统的东西在LIBS = – fche
这将是头可能使用LIBS =而不是LIBS + =? –
另一个破解是利用Makefile中的LIBS = $(SUBLIBS) ...
部分qmake写道。 即调用生成的Makefile
与
make SUBLIBS=-L/path/to/your/opencv
- 1. 如何在cygwin中设置psql命令?
- 2. 如何在add()命令中设置listview?
- 3. qmake在命令行中分配变量
- 4. 如何设置/ p命令
- 5. 如何设置命令
- 6. qmake:最后执行命令
- 7. 如何在CMD命令输出传递给#define宏在QMAKE
- 8. 如何在终端中自动设置Python命令和其他任何命令?
- 9. 如何在命令行中在Windows中设置代理异常?
- 10. “设置 - ”命令,在终端
- 11. 如何设置一个bash命令
- 12. 如何使用curl命令设置cron?
- 13. 如何从命令行设置时区?
- 14. 如果存在命令设置变量
- 15. qmake系统的Qbs模拟()命令
- 16. 从命令提示符编译qmake
- 17. qmake设置安装目录
- 18. 在Makefile命令中设置变量
- 19. 在vi中设置列表命令
- 20. 在代码中设置选择命令
- 21. 在XAML中设置命令目标
- 22. 在命令行中设置IPV6,Win PE
- 23. 如何在IntellJ中配置'pull'命令?
- 24. 如何正确使用QMAKE的“系统”命令输出
- 25. 如何从命令行传递QMAKE变量?
- 26. qmake:如何通过命令行提供多个变量?
- 27. 如何在量角器中通过命令行设置IEDriverServer.exe
- 28. 如何在Update函数中只设置一次动画命令?
- 29. 如何在新的ormlite api中设置命令超时
- 30. 如何在命令类中设置语言环境symfony2.1
你解决了这个问题吗? –
你可以明确地指定一个路径: LIBS + = -l $ {} OPENCV_HOME/lib目录/ opencv_core – edwinc