То, как установить, освобождает заказ в qmake?


We have a problem building out C++ software on Ubuntu Linux with qmake.
Problem is: we use some library, for example OpenCV, that can have different versions in one system.
qmake automatically add -L/usr/lib or -L/usr/lib/x86_64-linux-gnu to g++ arguments, and contents of LIBS variables after it.
So there conflicts with different versions of OpenCV, the system version is used, but we need custom one, located at our build tree. Are there any methods to change libs order in -L or something else to solve this problem?

2
nl ja de
вы решили эту проблему?
добавлено автор elvis.dukaj, источник
вы могли явно определить путь: ОСВОБОЖДАЕТ + =-l$ {OPENCV_HOME}/lib/opencv_core
добавлено автор edwinc, источник

2 ответы

Есть два компонента к выполнению этого:

Во-первых, необходимо удостовериться, что включали их в .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 сначала перед системными библиотеками.

0
добавлено
Это, кажется, не помогает подавить-L/usr/lib системный материал во главе, ОСВОБОЖДАЕТ =
добавлено автор fche, источник
Было бы возможно использовать, ОСВОБОЖДАЕТ = вместо, ОСВОБОЖДАЕТ + =?
добавлено автор Daniel Moodie, источник

Другое хакерское проникновение должно эксплуатировать , ОСВОБОЖДАЕТ = $ (SUBLIBS)... , часть Make-файла qmake пишет. А именно, призовите произведенный Make-файл с

make SUBLIBS=-L/path/to/your/opencv
0
добавлено
Linux Help
Linux Help
2 686 участник(ов)

Правила: https://telegra.ph/Pravila-Linux-Help-10-15

Linux Security
Linux Security
652 участник(ов)

Данная группа принципиально про безопасность и в частности про безопасность Linux. Прочие темы просим обсуждать в профильных чатах.

Linux Gaming RUS
Linux Gaming RUS
28 участник(ов)

Русскоязычный чатик, посвящённый играм на различных дистрибутивах Linux, а также wine, proton Arch Linux RU @ArchLinuxChatRU Gnome RU @gnome_ru