© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
10 апреля 2018 г. 7:52

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

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

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

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

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

Для Django рекомендую VDS-хостинг TIMEWEB

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

По большей части, что в конфигурационный скрипт 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. И не знаю, какие там могут быть подводные камни (от слова совсем).

Для Django рекомендую VDS-хостинг TIMEWEB

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

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
15 октября 2018 г. 21:36
Allyans .

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

  • Результат 60баллов,
  • Очки рейтинга-1
15 октября 2018 г. 11:25
Екатерина Самойлова

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

  • Результат 33баллов,
  • Очки рейтинга-10
15 октября 2018 г. 11:17
Екатерина Самойлова

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

  • Результат 80баллов,
  • Очки рейтинга4
Последние комментарии
16 октября 2018 г. 16:14
pasagir

Qt/C++ - Урок 006. QSqlQueryModel - Таблицы в Qt с помощью SQL-запросов

В Qt 5.11. при попытке вставить в БД запись выдает ошибку QSqlQuery::prepare: database not openQSqlDatabasePrivate::database: requested database does not belong to the calling thread. ...
10 октября 2018 г. 9:50
Евгений Легоцкой

Qt/C++ - Урок 083. Создание динамической библиотеки и подключение её в другой проект

Если и начинать писать о плагинах, то нужно тогда с Qt Creator начинать, там наверняка будет одинаковый принцип, но по Qt Creator хотя бы информация есть.
10 октября 2018 г. 9:48
ost.vld

Qt/C++ - Урок 083. Создание динамической библиотеки и подключение её в другой проект

О плагинах к QtCreator в целом, тоже интересно.
10 октября 2018 г. 9:46
ost.vld

Qt/C++ - Урок 083. Создание динамической библиотеки и подключение её в другой проект

ну типа того, создание программы, функционал которой можно расширять плагинами, и, в перспективе, создание API.
Сейчас обсуждают на форуме
15 октября 2018 г. 12:45
Allyans .

QGraphicsItem change color

Хорошо)
11 октября 2018 г. 10:13
Arrow

Работа с WebView в QML

Нашел в чем проблема. Пишу на случай если кому-то попадется такое же счастье с WebView как и мне. Проблема как оказалась с Debug версией, так как в Release и Profile все работает (...
10 октября 2018 г. 12:49
Виталий Антипов

Кто что делает на Qt?

Работаем по локальной сети. Файл базы, схемы и фото лежат на сервере. Чтобы не было проблем при одновременной работе с одним файлом, все запросы обернул в транзакции, как указано в документаци...
10 октября 2018 г. 11:21
Arrow

Редактирование записи на форуме

Добрый день! К сожалению встретил небольшой баг на форуме. При создании записи на форуме и вставке кода, через соответствующую кнопку номера строк проставляются верно, но каждый...
10 октября 2018 г. 9:46
Arrow

Настройка Qt Creator для Android

Я Genymotion  ставил с VBox в комплекте для личного использования, после добавил из списка телефон с нужным API. Запустил его и при компиляции Qt Creator сам нашел его и все запустилось...
Присоединяйтесь к нам в социальных сетях