Я пытаюсь создать кроссплатформенное приложение QT C ++ (Linux / Windows), используя MXE и сделать. Я гуглил очень, очень сильно, вы не знаете, насколько блестящими были мои запросы в Google. Такие запросы. Но:
Проблема: неопределенные ссылки.
/home/user/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qregularexpression.o):qregularexpression.cpp:(.text+0x2b7): undefined reference to `pcre16_exec'
(и многие другие в этом роде)
Решение:
cd ~/mxe && make pcre
затем добавьте в CMakeFiles.txt:
ADD_LIBRARY(pcre STATIC IMPORTED)
SET_TARGET_PROPERTIES(pcre PROPERTIES IMPORTED_LOCATION /home/user/mxe/usr/i686-w64-mingw32.static/lib/libpcre16.a)
TARGET_LINK_LIBRARIES(${CMAKE_PROJECT_NAME} pcre)
Последняя проблема: другие неопределенные ссылки.
/home/user/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qbytearray.o):qbytearray.cpp:(.text+0x60a): undefined reference to `uncompress'
/home/user/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Core.a(qbytearray.o):qbytearray.cpp:(.text+0x1a30): undefined reference to `compress2'
/home/user/mxe/usr/i686-w64-mingw32.static/qt5/lib/libQt5Gui.a(qharfbuzzng.o):qharfbuzzng.cpp:(.text+0x143e): undefined reference to `hb_font_funcs_set_glyph_v_origin_func'
Но я не знаю, из какой библиотеки это compress
или же hb_font_funcs_set_glyph_v_origin_func
приходит. Я мог бы погуглить их один за другим, но это похоже на практику каменного века. И в долгосрочной перспективе я не хочу делать это для каждого кросс-скомпилированного проекта.
Вопросы):
Как найти имена нужных библиотек, не читая файлы сборки qt? Есть ли способ вывести зависимости (нужны динамические библиотеки) с помощью cmake или make?
Возможные решения:
Я знаю, что могу использовать LDD в двоичном файле. Что мне нужно, это что-то вроде ldd-time-link. Это возможно?
Может быть, я мог бы использовать make (на этапе сборки QT) для печати зависимостей QT. Если да, то как это сделать?
UPD: обнаружен
mxe связано почти решение:
usr/bin/i686-w64-mingw32.static-pkg-config --list-all | sort
usr/bin/i686-w64-mingw32.static-pkg-config Qt5Widgets --libs
Задача ещё не решена.
Других решений пока нет …