Evgenii
найс
Arseny
Какую реализацию будешь тестировать?
Arseny
А то, что он предлагает это разве окончательный вариант? От реализации может очень много зависеть. Я бы заодно и glibc-овскую версию глянул. Она хотя бы уже долго ими используется.
Arseny
Я не вникал, но в чем разница между Two-way и crochemore-perrin? >This proposal attempts to add a third algorithm, namely the Two-Way String Matching algorithm by Maxime Crochemore and Dominique Perrin,
Evgenii
первый и третий одно и то же, не?
Vladislav
Не читал, но осуждаю?)
Arseny
В glibc даже ссылаются на http://www-igm.univ-mlv.fr/~lecroq/string/node26.html
Arseny
И вообще все ссылаются на CROCHEMORE M., PERRIN D., 1991, Two-way string-matching,
Arseny
И какой вывод? Нужно это в стандарт?
Олександр
Ммм, не нужно имхо
Vladislav
почему бы не использовать std::array, в таком случае?)
Олександр
Это будет неправильно
Олександр
В стандарт бы добавить такую инициализацию. struct Test { char characters_[3]; Test(char (&characters)[3]) : characters_(characters) {} };
Олександр
Ммм, не нужно имхо
Олександр
Это будет неправильно
Олександр
Масив сишный не единое целое
Олександр
Разве что в плане памяти
K
Народ, привет ) есть ли норм варианты для компиляции Qt проекта? Утилита входящая в состав Qt которая копирует зависимости не работает как надо. А пересобирать Qt для статической компиляции мне кажется слишком неправильно
Dmitriy
"Утилита входящая в состав Qt которая копирует зависимости" Линковщик который, я так разумею?
Anonymous
Следует помнить, что статическая линковка нарушит лицензионное соглашение GPL библиотек если проект с закрытыми исходниками.
Anonymous
вроде qmake
Тогда не вижу проблемы. qmake умеет подставлять пути к либам через стандартный pkg-config.
Anonymous
CONFIG += link_pkgconfig PKGCONFIG += opencv ^^ пример с opencv, которая вставится через pkg-config как для компилятора, так и для линкера.
Dmitriy
windeployqt утилита
а при чем тут компиляция, осмелюсь спросить? это уже процесс деплоя
Anonymous
Да, есть такое. Но искать вручную используемые библиотеки ещё хуже
Пропиши используемые библиотеки в файл проекта по шаблону, который я указал выше и всё будет резолвиться автоматически.
Anonymous
windeployqt утилита
Или у тебя винда?
K
а при чем тут компиляция, осмелюсь спросить? это уже процесс деплоя
ммм, да, я криво выразился компилировать то удается, просто исполняемый файл требует либ, которые приходится копировать в папку с исполняемым файлом
K
Или у тебя винда?
Да, под виндой )
Anonymous
Да, под виндой )
Тогда не в курсе вендопроблем. 😊
K
:D
K
я сделал пробный проект с использованием QML и пытаюсь его запустить вне среды
Dmitriy
у тебя есть быстрый кривой путь - подсмотреть настройки окружения, как в отладчике, потратить 1 минуту на написание BAT файла, выставляющего эти-же настройки и запускающего твой нужный файл. а перед релизом уже собирать зависимости в одно место
K
т.е. в итоге все-равно копировать нужные библиотеки?
Dmitriy
нет, библиотеки будут где лежали
K
так не запускается, он требует чтоб они лежали в папке с исполняемым файлом
Vladislav
для статической линковки с qt нужна отдельная лицензия, кажется? (Если планируется продавать программу)
K
И таких вот море
Dmitriy
так не запускается, он требует чтоб они лежали в папке с исполняемым файлом
Все правильно, потому что система, бедная, не знает где эти чертовы библиотеки лежат и в панике пытается их искать там, где у нее это прописано. А там ничего! Тогда она скорее бежит в папку с исполняемым файлом, а там тоже него! И вот тогда система сразу в слезы, истерика и как результат, страшные окна. Поэтому я и предлагаю сказать бедной системе, что библиотеки можно брать тут и там. (хотя смысла от этого я не вижу без релиза)
K
не у всех установлен qt
Anonymous
не у всех установлен qt
Qt под виндой невозможно установить глобально, поэтому каждая программа тащит свои копии Qt DLL файлов нужной ей версии.
Vladislav
http://forum.vingrad.ru/index.php?showtopic=355247&view=findpost&p=2511517
Ну так lgpl как раз требует распространять исходники, если линкуешь статически
Dmitriy
Окей, а при создании инсталлятора, что делать? Мне же надо знать какие именно dll-ки нужны, а чтоб их найти надо перебирать по одной
ну по факту для большинства приложений без доп зависимостей список зависимостей из фреймворка достаточно скуден и собирается из одной-двух папок за 3 минуты руками по факту один раз
Anonymous
Ну так lgpl как раз требует распространять исходники, если линкуешь статически
Только самого Qt, а он вшит внутрь, поэтому ещё и приложения.
K
ну по факту для большинства приложений без доп зависимостей список зависимостей из фреймворка достаточно скуден и собирается из одной-двух папок за 3 минуты руками по факту один раз
Согласен. Но проблема в том, что ПРОГРАММА на Qt на определенном этапе перестает писать каких библиотек нехватает. Оно тупо не запускается. А если скопировать все либы, то всё ок.
K
Из-за этого и бомблю. Потому-что приходится вручную проверять. Удалять по файлу
Anonymous
И это кстати хорошо, что Qt под виндами невозможно установить глобально, иначе бы пришлось колхозить к этому и средство подавления DLL Hell в виде WinSxS, который и так раздувается за год работы до 50+ ГБ.
K
http://www.dependencywalker.com/
ну только если так, в итоге приходится искать вручную что ему не хватает.
K
ппц
K
на линуксе таких проблем я не помню
Anonymous
на линуксе таких проблем я не помню
Их и нет, т.к. всё линкуется штатно, а зависимости потом прописываются внутрь RPM или DEB пакета также автоматически.
Dmitriy
на линуксе таких проблем я не помню
Потому что там qt идёт в папках библиотек системы и система их видит. Не совсем идёт, просто можно поставить в систему
Dmitriy
Товарищ Виталий уже об этом говорил
K
Хм... ну в общем понятно, спасибо ) нет простых решений
Anonymous
Потому что там qt идёт в папках библиотек системы и система их видит. Не совсем идёт, просто можно поставить в систему
При сборке прописывается зависимость от Qt и прочих библиотек нужной версии, затем при установке такого пакета пакетный менеджер сам всё установит (разрешит зависимости).
Anonymous
Ну это и есть смысл работы пакетного менеджера =)
Да. Но если например приложение собрано с Qt 5.9, а в системе Qt 5.6, то потребуется его пересобирать.
K
https://habrahabr.ru/post/262211/
спасибо, почитаю позже )
K
https://habrahabr.ru/post/262211/
Не, не помогает. Слишком тривиальное описание. "Запустите то, запустите это, вы будете довольны". А вот и нет :D Там тоже используется утилита windeployqt, которая что-то делает, что-то подтягивает, создает файлы рядом с исполняемым файлом, но.... в итоге процесс запускается, но ничего не отображается, такое ощущение что он динамически что-то подгружает к процессу, и не находит либу. А эта windeployqt смотрит только на зависимости в файле
Bohdan
Доброе время суток, недавно начал изучение с++(сейчас читаю Майкл Доусон "Изучаем с++ через программирование игр"), может подскажете какую книгу после этого прочесть или подскажете свои пути изучения)?
K
А ты думал... Это тебе не тот язык, чтобы все легко было =) Тут боль и страдания на каждом шагу
проще выкинуть тогда qt, на win api меньше гемора, ниче не надо, всё есть в системе :D
Dmitriy
проще выкинуть тогда qt, на win api меньше гемора, ниче не надо, всё есть в системе :D
На вкус и цвет все фломастеры разные ) Тут уж тебе решать. Везде свои плюсы и минусы.
Олександр
проще выкинуть тогда qt, на win api меньше гемора, ниче не надо, всё есть в системе :D
>win api >qt >меньше гемора Очень сложно положить DLL рядом с исполняемым файлом.
K
xDDDD
K
да эт бомбит просто ну да, я выделил все либы и кинул рядом с проектом, пофиг, придется по одной удалять и проверять запускается ли
Олександр
Лол
Олександр
Ты же хедеры подключал
Олександр
Можно просто посмотреть в документации что из какого модуля