我們在使用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