Что вы делаете неправильно, так это то, что вы не запускаете цикл обработки событий Qt. то есть это неверно:
int main(int argc, char *argv[])
{
MyUDP *myUDP = new MyUDP(0);
myUDP->initSocket(port);
while (true) {
usleep(1000);
}
return 0;
}
... вместо этого у вас должно быть что-то вроде этого:
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// connect needs to occur after QCoreApplication declaration
MyUDP *myUDP = new MyUDP(0);
myUDP->initSocket(port);
return app.exec();
}
... это внутри вызова app.exec()
, где приложение Qt тратит большую часть своего времени (app.exec()
не вернется, пока Qt не захочет выйти), и именно там Qt будет обрабатывать запросы ввода / вывода вашего UDP-сокета и потребности в сигнализации.
Я храню файлы RES моего проекта в git (те, которые соответствуют имени dpr).
Я полагаю, что единственная причина, по которой файл RES проекта будет меняться каждый раз при сборке, - это если у вас установлен инкрементный номер сборки, что для меня означает, что вам нужно сохранить res в исходном контроле, или вам нет дела до сборки номер, так что вы должны отключить эту опцию.
У меня также есть файлы RES, которые я создаю из RC, которые меняют каждую компиляцию, поэтому у меня есть gitignore для * .res, и я затем добавляю git add -f project.res
для файлов RES проекта
Добро пожаловать в клуб. Файл приложения .res в Delphi - это боль в нижней части спины для всех, кто использует систему контроля версий. Вы хотите использовать auto-inc-buildnumber, но он портит ваш контроль над ресурсами. Я сделал
, разделив значок и ресурсы версий следующим образом:
{$ R * _icon.res}
{$ R * ._ version.res}
отключить автоматическое включение номера сборки
Инструмент, который я написал для создания файла версии .res, является свободным программным обеспечением, доступен здесь , а также из SourceForge
Настоятельно рекомендуется отключить «Номер сборки автоинкремента» в настройках проекта с любой системой контроля версий. Таким образом, можно безопасно добавлять файлы .res в хранилище.
Я долго искал способ автоматического обновления номера сборки в информации о версии в файле проекта .res, но лучше всего обновить дополнительный .rc с информацией о версии. Однако на практике я обычно обновляю номер сборки до текущего номера редакции Subversion только прямо перед финальной сборкой для выпуска двоичных файлов.
Не могли бы вы:
.res
.res
, которые можно сгенерировать (скомпилировать файлы сценария ресурсов .rc
) .res
без файлов .rc
, чтобы сгенерировать их: если у вас указано в .gitignore
, что их следует игнорировать, тогда их можно добавить: они не будут отображаться в diff. По определению, RES-файлы - это скомпилированные RC-файлы. Поэтому в идеале вы должны игнорировать все RES-файлы и фиксировать только RC-изменения. Если случилось так, что у вас нет RC-исходника для какого-то конкретного RES-файла, то добавьте в git только этот "бесхозный" RES-файл - такие файлы не должны меняться от сборки к сборке (потому что нет RC-файла, из которого их можно сгенерировать). Если по каким-то странным причинам (Delphi, ага) такие RES файлы меняются, то вы обречены.
Итог: RES-файлы являются объектами компиляции - ничем не отличаются от других двоичных файлов (obj, exe и т.д.)
Я не знаю GIT, но в SVN я просто "SVN ADD" только те несколько файлов, которые имеют значение, а не автоматически сгенерированные. Поскольку неверсированные файлы исключаются из дифов, это тоже решается.