Название: minimum Mac OS version Отправлено: Авварон от Апрель 24, 2019, 22:34 Я продолжаю насиловать труп QBS=) На моем маке фейлятся некоторые тесты, в частности, тест на минимальную версию макоси в случае, когда она явно не задана. Тест предполагает наличие LC_VERSION_MIN_MACOSX в выхлопе otool -l. Однако я не вижу эту переменную в двух случаях - если я компилирую и мин. версия не задана или мин. версия == текущей версии ос.
Вот есть простой main.cpp: Код: $ cat main.cpp Компилируем с дефолтной версией, переменной нет: Код: $ export MACOSX_DEPLOYMENT_TARGET="" Компилируем с текущей версией, переменной нет: Код: $ export MACOSX_DEPLOYMENT_TARGET=10.14 Компилируем с предыдущей версией макоси, бинго, переменная есть: Код: $ export MACOSX_DEPLOYMENT_TARGET=10.13 Это что-то поменялось в 10.14? Или всё же где-то сломано в qbs? Немного смущает версия sdk 10.14 - может быть дело в том, что она не совпадают с версия макоси? Кто-нибудь может проверить поведение на более древних маках? Ставить ничего не надо кроме XCode. Название: Re: minimum Mac OS version Отправлено: kambala от Апрель 25, 2019, 14:59 проверил на системе 10.13 с сдк 10.13: LC_VERSION_MIN_MACOSX всегда выводится.
если MACOSX_DEPLOYMENT_TARGET не задана, то дефолтится к той, что задана в сдк. но у меня стоит Xcode 10, в котором сдк 10.14... Название: Re: minimum Mac OS version Отправлено: kambala от Апрель 25, 2019, 15:08 сейчас еще проверил с Xcode 9 — там вообще MACOSX_DEPLOYMENT_TARGET никак не влияет почему-то. что-то я запутался уже.
Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 25, 2019, 15:10 А версию кланга можно обоих XCode?
Раньше в qbs был фоллбэк в -mmacosx-version-min= но теперь его заменила пара -target и переменная окружения. Не уверен в какой версии кланга появилась переменная. Спасибо! Название: Re: minimum Mac OS version Отправлено: kambala от Апрель 25, 2019, 15:30 я видно там что-то напутал, поэтому MACOSX_DEPLOYMENT_TARGET не сработало. теперь все норм:
Код
Код: check Xcode '': Название: Re: minimum Mac OS version Отправлено: kambala от Апрель 25, 2019, 15:38 странно, что сдк везде пишется 10.13, хотя ведь в Xcode 7 совсем не 10.13. Попробовал через DEVELOPER_DIR — результат тот же... -isysroot тоже не помогает...
Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 25, 2019, 16:32 Спасибо за помощь, видимо, достаточно пропатчить тест чтобы он на 10.14 и выше не искал эту переменную=)
Название: Re: minimum Mac OS version Отправлено: kambala от Апрель 25, 2019, 17:39 вот оно в чем дело:
Код: Load command 9 нашел тут: https://stackoverflow.com/a/52995622/1971301 Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 25, 2019, 21:55 Эх, а я уже закоммитил неверный фикс=(
Вот вроде правильный https://codereview.qt-project.org/#/c/259789/2 Ревью велкам. Название: Re: minimum Mac OS version Отправлено: ViTech от Апрель 26, 2019, 11:12 Я продолжаю насиловать труп QBS=) А почему продолжаете этим заниматься? :) Что обнадёживает? А то я на днях решил таки закопать стюардессу... Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 26, 2019, 11:49 А почему продолжаете этим заниматься? :) Что обнадёживает? А то я на днях решил таки закопать стюардессу... Кто-то же должен этим заниматься=) Поправить мелкие баги в QBS проще, чем вспоминать ужасный синтаксис цмейка и переводить все проекты на него. Я в своё время обожрался с ним кактусов, до сих пор стрёмно. Несмотря на отсутствие нормальной документации к QBS (щаз с этим получше), наличие примера в виде QtC позволяет упростить жизнь по сравнению с часами проведенными в (большой и всеобъемлющей) доке к CMake. Также, лично мне известен опыт одной крупной российской компании, которая сперва сидела на цмейке, а потом написала свою систему сборки, так что не всё так хорошо в датском королевстве. Название: Re: minimum Mac OS version Отправлено: ViTech от Апрель 26, 2019, 12:21 Я в своё время обожрался с ним кактусов, до сих пор стрёмно. А это в какой версии CMake было? Сейчас пробую на нём писать проектные файлы, по сути, достаточно много общего с Qbs получается. С документацией в CMake как-то не очень, почему-то лучше всего по слайдам (https://meetingcpp.com/mcpp/slides/2018/MoreModernCMake.pdf) получается учиться ))). И в том, что в них называется More Modern CMake (v. 3.11 (March 2018)), вроде не так уж всё и ужасно. Его б только наизнанку вывернуть, чтоб швы внутри спрятать, а снаружи нормальный вид оказался :). Было бы хорошо, если бы команды Qbs и CMake объединились и сделали, к примеру, C++Make (по аналогии как С++ - это С с классами): с внешней формой/синтаксисом как в Qbs, и накопленной функциональностью CMake. Но это мечты... Особого распространения Qbs что-то не заметно, а сопровождать две системы сборки для проектов всё таки накладно. Вот и приходится закапывать стюардессу, хотя хороша, зараза :). Название: Re: minimum Mac OS version Отправлено: kuzulis от Апрель 26, 2019, 12:34 Цитировать Кто-то же должен этим заниматься=) О, нас уже как минимум двое, а то я все переживал :) Цитировать Вот и приходится закапывать стюардессу, хотя хороша, зараза Не, ну ниша то найдется в любом случае... Например я/мы используем QBS для baremetal вместе с обычными "десктопными проектами". Когда, например, есть некий супер-пупер проект, который помимо "десктоп/ембеддед" части имеет также и железную часть (части) где нужно писать еще и хитрые прошивки с хитрыми бутлоадерами и пр. Например, прошивки, содержащие несколько приложений и загрузчиков в одном бинаре, лежащим по разным адресам и пр.. и чтобы сгенерить эту прошивку и скомпоновать кучу всякой "хрени" как раз-таки QBS вне конкуренции, т.к. там есть поддержка (сервис) для работы в бинарными файлами, которые можно пропатчить как угодно. Т.е. открываем QtC и сразу из одного мега-проекта можем девелопить как "десктопные" под-проекты, так и "железячные", не отходя от кассы. ЗЫ: У меня с CMake тож не оч. срослось как-то, особенно в плане работы с "железяками", т.к. там используется не только GCC, но и часто проприетарные IAR, KEIL, что ИМХО, убивает CMake наповал (писать какие-то стремные toolchain файлы? неее... мне проще в QBS добавить что надо и оно будет сразу работать). :) Название: Re: minimum Mac OS version Отправлено: ViTech от Апрель 26, 2019, 12:43 О, нас уже как минимум двое, а то я все переживал :) Судя по Qbs 1.13 released (https://blog.qt.io/blog/2019/04/18/qbs-1-13-released/), просто так она помирать не собирается, что радует :). Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 26, 2019, 14:27 А это в какой версии CMake было? Сейчас пробую на нём писать проектные файлы, по сути, достаточно много общего с Qbs получается. С документацией в CMake как-то не очень, почему-то лучше всего по слайдам (https://meetingcpp.com/mcpp/slides/2018/MoreModernCMake.pdf) получается учиться ))). И в том, что в них называется More Modern CMake (v. 3.11 (March 2018)), вроде не так уж всё и ужасно. Его б только наизнанку вывернуть, чтоб швы внутри спрятать, а снаружи нормальный вид оказался :). Было бы хорошо, если бы команды Qbs и CMake объединились и сделали, к примеру, C++Make (по аналогии как С++ - это С с классами): с внешней формой/синтаксисом как в Qbs, и накопленной функциональностью CMake. Но это мечты... Особого распространения Qbs что-то не заметно, а сопровождать две системы сборки для проектов всё таки накладно. Вот и приходится закапывать стюардессу, хотя хороша, зараза :). Я забросил CMake где-то на версии 3.4, которая уже "modern"; хотя сейчас установлена одна из свежих для сторонних проектов. Другое дело, что там есть обратная совместимость и старый немодерн говнокод всё равно работает. Но это же и минус - неясно - как делать "правильно" - гуглишь, а них проект 5летней давности с тем же говнокодом как у тебя. Потом, как это апгрейдить? Одно дело, когда у проект на десяток файлов и их можно перелопатить в соответствии с новыми веяниями, а когда проект огромный? *Брюжжит:* я помню старые добрые времена, когда automoc не работал "искаропки" и чтобы заинклюдить мок в цпп надо было шаманить с бубнами. Потом появился автомок, но не по дефолту. Потом вроде сделали "искаропки"... Но это все какие-то весьма детские болячки - кеды собираются с цмейком последние 30 лет, и что, никому не нужен был автомок? А еще синтаксис как заюзать в проекте qt4 и qt5 различался, а теперь, я слышал, новый ввели... Доколе? Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 26, 2019, 14:35 О, нас уже как минимум двое, а то я все переживал :) Я ленивый слишком и застрял надолго с поддержкой clang-cl - богомерзкая венда, всё неудобно, желания ковыряться в этом мало=) Как подумаю что еще оригинальный clang надо добавлять, так совсем грустно становится. Из интересных issue на след версию мне оч понравился баг (https://bugreports.qt.io/browse/QBS-118)с qbs gui (https://bugreports.qt.io/browse/QBS-34)по аналогии с cmake gui. К черту Среатор, скачал qbs, открыл проект, нажал пупочку, всё собралось, поставилось, запаковалось. Красота же! Но, возможно, я недооцениваю объем работы... Название: Re: minimum Mac OS version Отправлено: ViTech от Апрель 26, 2019, 14:58 Из интересных issue на след версию мне оч понравился баг (https://bugreports.qt.io/browse/QBS-118)с qbs gui (https://bugreports.qt.io/browse/QBS-34)по аналогии с cmake gui. Да уж... тем "багам" скоро по 10 лет будет )). Кстати, в Creator'e в Build Settings для CMake запилили табличку с параметрами конфигурации. А для Qbs отделались одной строчкой properties в Build Steps. Маловато будет. К черту Среатор, скачал qbs, открыл проект, нажал пупочку, всё собралось, поставилось, запаковалось. Красота же! Но, возможно, я недооцениваю объем работы... Может там много возни с toolchain, Qt Kit, Qbs profile и прочими неинтересными штуками. Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 26, 2019, 15:31 Да уж... тем "багам" скоро по 10 лет будет )). Кстати, в Creator'e в Build Settings для CMake запилили табличку с параметрами конфигурации. А для Qbs отделались одной строчкой properties в Build Steps. Маловато будет. К сожалению, фанбоев симейка гораздо больше, чем фанбоев qbs, которые готовы есть кактус и пилить поддержку cmake в qt/qtc. Так-то формочку сделать не проблема, проблема что в qbs слишком много разных уровней - это и проект, и модули... Возможно, это архитектурная проблема, а возможно, достаточно просто сделать метод, который возвращает дефолтные значения всех пропертей в виде дерева. Я напишу в рассылку и спрошу, как это правильно делать. Может там много возни с toolchain, Qt Kit, Qbs profile и прочими неинтересными штуками. С т.з. qbs это всё "профили", а с 1.13 setup-qt канул в лету, всё, что нужно профилю - это путь к qmake... Остальное - это оверинжениринг креатора. Хотя не спорю, разделение на киты удобнее, чем дерево пропертей профилей=) Название: Re: minimum Mac OS version Отправлено: ViTech от Апрель 26, 2019, 16:03 Попробуй, забутстрапь qbs... Или хотя бы перейди с QtScript на QtDeclarative. К сожалению, фанбоев симейка гораздо больше, чем фанбоев qbs, которые готовы есть кактус и пилить поддержку cmake в qt/qtc. Так вроде сами кутешники одной из основных причин отказа от Qbs называли её зависимость от Qt. Похоже то, что обеспечило возможность быстрого старта (javascript в файлах проектов), в конечном счете стало основным тормозом :). Бог С++ бдит и карает неверных )). Так-то формочку сделать не проблема, проблема что в qbs слишком много разных уровней - это и проект, и модули... Возможно, это архитектурная проблема, а возможно, достаточно просто сделать метод, который возвращает дефолтные значения всех пропертей в виде дерева. А как узнать, какие свойства нужно выводить (подлежат конфигурированию/влияют на сборку)? Так-то свойств много всяких внутренних/временных. Название: Re: minimum Mac OS version Отправлено: Авварон от Апрель 26, 2019, 16:16 А как узнать, какие свойства нужно выводить (подлежат конфигурированию/влияют на сборку)? Так-то свойств много всяких внутренних/временных. Тащем-то я это и имел виду=) Можно отфильтровать стандартные модули (cpp, Qt.*) и оставить только кастомные. Идеально - только те, что добавил сам юзер. Название: Re: minimum Mac OS version Отправлено: ViTech от Апрель 26, 2019, 16:35 Можно отфильтровать стандартные модули (cpp, Qt.*) и оставить только кастомные. Идеально - только те, что добавил сам юзер. Например, у меня в imports/modules много внутренних/временных свойств может быть, их не нужно в окне конфигурации выводить. По-хорошему, их как-то отмечать надо, что их можно снаружи конфигурировать. Так что, как обычно, не всё так просто :). |