мне нужно связать libA.a
библиотеку в моем qmake
файл дважды:qmake: Как связать библиотеку дважды?
LIBS = -lA \
-lB \
-lA \
-lC \
-lD
qmake
но удаляет первый -lA
во время работы g++
. Что мне делать?
мне нужно связать libA.a
библиотеку в моем qmake
файл дважды:qmake: Как связать библиотеку дважды?
LIBS = -lA \
-lB \
-lA \
-lC \
-lD
qmake
но удаляет первый -lA
во время работы g++
. Что мне делать?
Скажите QMAKE отключить объединение всех LIBS флагов с:
CONFIG += no_lflags_merge
Однако это приведет все дублирующие библиотеки не будет очищено. Однако это не имеет значения на практике.
В качестве альтернативы вы можете обмануть qmake так, чтобы он не обнаружил дублируемую библиотеку; поскольку она соответствует только строки и на самом деле не разобрать библиотеки флагов, вы можете сделать:
LIBS += -lA -lB -l A -lC -lD
Обратите внимание на разницу между -lA
и -l A
. Это гарантирует, что qmake не будет считать эти флаги равными, хотя с точки зрения компилятора они равны, поскольку компилятор делает фактический синтаксический анализ аргумента командной строки, а qmake - нет.
Что он производит: 'g ++ -lA -lB -lA -Wl, -O1 -Wl, -rpath,/opt/Qt5.1.0/5.1.0/gcc -Wl, -rpath,/opt/Qt5.1.0/5.1.0/gcc/lib -o TableView main.o mainwindow.o customsqlmodel.o model.o helper.o cdrlistmodel.o moc_mainwindow.o moc_customsqlmodel.o -lC -lD -L/opt/Qt5.1.0 // 5.1. 0/gcc/lib -lQt5Widgets -lQt5Sql -lQt5Gui -lQt5Core -lGL -lpthread' – Meysam
Но это не работает, потому что '-lA -lB -lA' сразу после' g ++ '. Если я перемещаю их до '-lC -l' (вручную), программа компилируется успешно: ' g ++ -Wl, -O1 -Wl, -rpath,/opt/Qt5.1.0/5.1.0/gcc -Wl, -rpath,/opt/Qt5.1.0/5.1.0/gcc/lib -o TableView main.o mainwindow.o customsqlmodel.o model.o helper.o cdrlistmodel.o moc_mainwindow.o moc_customsqlmodel.o -lA -lB -lA -lC -lD -L/opt/Qt5.1.0 // 5.1.0/gcc/lib -lQt5Widgets -lQt5Sql -lQt5Gui -lQt5Core -lGL -lpthread' – Meysam
Любое обходное решение? – Meysam
насчет:
QMAKE_LFLAGS += -(-lA -lB -)
?
Edit: вы пытались
QMAKE_LFLAGS += -(-lA -lB -lC -lD -)
Что этот синтаксис делает то, что он будет решать все depencies между библиотеками, даже если они несколько рекурсивный (A :: материал нуждается в B :: материал нуждается в C :: материалу нужен :: материал)
Не могли бы вы также включить библиотеки 'C' и' D'? – Meysam
Я получаю эту ошибку: '/ bin/sh: Синтаксическая ошибка:" ("неожиданный make: *** [TableView] Ошибка 2' – Meysam
И это последняя команда, выполненная с синтаксической ошибкой:' g ++ - (-lA -lB -lC -lD -) -Wl, -rpath,/opt/Qt5.1.0/5.1.0/gcc -Wl, -rpath,/opt/Qt5.1.0/5.1.0/gcc/lib -o TableView main .o mainwindow.o customsqlmodel.o model.o helper.o cdrlistmodel.o moc_mainwindow.o moc_customsqlmodel.o -L/opt/Qt5.1.0 // 5.1.0/gcc/lib -lQt5Widgets -lQt5Sql -lQt5Gui -lQt5Core -lGL -lpthread' – Meysam
Просто любопытно; зачем вам это нужно? –
@NikosC. Циклическая зависимость. – Meysam