alex_lip
alex_lip10 апреля 2018 г. 3:52

Подключение файла js к проекту.

Вынес все скрипты в отдельный файл js, который подключил к проекту. Теперь если я что-то изменяю в этих скриптах -  нужно обязательно чистить проект, чтобы компилятор понял изменения. Это баг или фича?

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

4
Evgenii Legotckoi
  • 10 апреля 2018 г. 4:10

Я такое поведение тоже давно заметил.

Думаю, что QMake не отслеживает, изменялись ли файлы, которые добавлены в рамках ресурсов, ведь каждый файл js или qml добавляется как строка в qrc файле. Либо отслеживает, но плохо.
Там по факту не происходит никакой компиляции, все такие файлы обрабатываются в ресурсные бинарники. А если какой-то файл просто удалить, без удаления строки из qrc, то сборка вообще не состоится. Будет ругаться на отсутствующую зависимость в лице того удалённого файла.

Так что, я бы сказал, что это не столько баг, сколько недостаток самой системы сброки QMake.
Как там дела обстоят у CMake с подобным поведением, я не проверял.
    alex_lip
    • 10 апреля 2018 г. 4:21

    А имеет смысл разбираться с CMake? В чем там преимущество?

      Evgenii Legotckoi
      • 10 апреля 2018 г. 4:54
      • (ред.)
      • Ответ был помечен как решение.

      По большей части, что в конфигурационный скрипт CMake, что в QMake я лезу не так часто. По большей части добавил какой-то функционал и забыл.
      Но сам по себе CMake, по отзывам и некоторому своему небольшому опыту, несколько удобнее и не страдает детскими болезнями, типо обязательного наличия обратного слеша, если был сделан перенос строки. У QMake один забытый (оставленный или недобавленный) обратный слеш может добавить изрядной головной боли, когда не понимаешь, почему вообще не компилится проект.


      Также, что QMake, что CMake - это системы сборки, а значит они могут отличаться ещё и скоростью сборки.
      На примере нескольких проектов я видел некоторый прирост в скорости компиляции на CMake. Но в тоже время изначально те проекты использовали QMake и их переводили на QMake, так что вполне возможно, что были убраны лишние шаги и лишний мусор в сборке. Но настройка автоматического копирования и целевых каталогов сборки в CMake мне показалась несколько более удобной.

      Есть ещё система сборки qbs от того же Qt, они её пилят как замену QMake, на гитхабе есть даже проекты, которые используют эту систему сборки, но на данный момент она значительно проигрывает в скорости сборки сложных и больших проектов первым двум системам сборки.

      По моему скромному мнению, специально брать и изучать что первое, что второе, что третье не имеет смысл. В процессе работы будете сталкиваться или с первым, или со вторым. И в обоих случаях нужно будет искать ответы в интернете или у коллег по цеху, как правильно реализовать тот или иной сценарий сборки.

      В Qt Creator поддержка CMake сделана из рук вон плохо, но вы используете CLion, насколько помню, так что вполне можно попробовать CMake.
      Плюсом понимания основ работы с CMake будет то, что он по факту используется повсеместно, тот же самый boost для сборки использует CMake, тогда как QMake - это чисто Qt-шная система сборки и вне проектов на Qt вы вряд ли найдёте её применение.

      Минусом CMake могут быть проблемы сборки под Андроид, теоретически. Но это лишь мои догадки, я не пробовал собирать проект Qt под Андроид с использованием CMake. И не знаю, какие там могут быть подводные камни (от слова совсем).
        alex_lip
        • 10 апреля 2018 г. 10:20

        Спасибо. Весьма доходчиво.

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь
          B

          C++ - Тест 002. Константы

          • Результат:16баллов,
          • Очки рейтинга-10
          B

          C++ - Тест 001. Первая программа и типы данных

          • Результат:46баллов,
          • Очки рейтинга-6
          FL

          C++ - Тест 006. Перечисления

          • Результат:80баллов,
          • Очки рейтинга4
          Последние комментарии
          k
          kmssr9 февраля 2024 г. 2:43
          Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
          АК
          Анатолий Кононенко5 февраля 2024 г. 9:50
          Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
          EVA
          EVA25 декабря 2023 г. 18:30
          Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
          J
          JonnyJo25 декабря 2023 г. 16:38
          Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
          G
          Gvozdik19 декабря 2023 г. 5:01
          Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
          Сейчас обсуждают на форуме
          P
          Pisych27 февраля 2023 г. 12:04
          Как получить в массив значения из связанной модели? Спасибо, разобрался:))
          AC
          Alexandru Codreanu19 января 2024 г. 19:57
          QML Обнулить значения SpinBox Доброго времени суток, не могу разобраться с обнулением значение SpinBox находящего в делегате. import QtQuickimport QtQuick.ControlsWindow { width: 640 height: 480 visible: tr…
          BlinCT
          BlinCT27 декабря 2023 г. 16:57
          Растягивать Image на парент по высоте Ну и само собою дял включения scrollbar надо чтобы был Flickable. Так что выходит как то так Flickable{ id: root anchors.fill: parent clip: true property url linkFile p…
          Дмитрий
          Дмитрий10 января 2024 г. 12:18
          Qt Creator загружает всю оперативную память Проблема решена. Удалось разобраться с помощью утилиты strace. Запустил ее: strace ./qtcreator Начал выводиться весь лог работы креатора. В один момент он начал считывать фай…
          Evgenii Legotckoi
          Evgenii Legotckoi12 декабря 2023 г. 14:48
          Побуквенное сравнение двух строк Добрый день. Там случайно не высылается этот сигнал textChanged ещё и при форматировани текста? Если решиать в лоб, то можно просто отключать сигнал/слотовое соединение внутри слота и …

          Следите за нами в социальных сетях