Есть несколько дефайнов
Код: Выделить всё
#define AAA 1
#define BBB 2
#define CCC 3
#define RESULT ???
Подскажите, что написать вместо ???
Модератор: Модераторы разделов
Код: Выделить всё
#define AAA 1
#define BBB 2
#define CCC 3
#define RESULT ???
Код: Выделить всё
#define Q(x) #x
#define QUOTE(x) Q(x)
#define AAA 1
#define BBB 2
#define CCC 3
#define RESULT QUOTE(AAA) "." QUOTE(BBB) "." QUOTE(CCC)
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Код: Выделить всё
#define RESULT QUOTE(A.B.C)
У Вас сама генерация реализована средствами препроцессора?
У-у-у... Если бы мы все могли использовать исключительно то, что нравится...
Для "правильного способа" слишком мало исходных данных.
Кусок программы. Просто там есть две переменные (как раз, фактически define), которые заполняются вручную (точнее собираются из четырёх). Как обычно - MAJOR, MINOR, BUILD, PATCH (они как раз реализованы в виде difine).Hephaestus писал: ↑18.01.2021 21:11У Вас сама генерация реализована средствами препроцессора?
Или это просто кусок программы, выполняющей генерацию?
В сторону wsl не смотрели? Или не та версия? Я сам не пробовал, но вроде как чьи-то потребности удовлетворяет.Hephaestus писал: ↑18.01.2021 21:11Я под оффтопиком за несколько лет уже весь unix наверно к себе перетащил в cygwin.
А сейчас вот 32-битный cygwin сломался, пока думаю, как лучше решить.
Ну, не могу я без нормальной командной строки, хоть убейте. Хотя бы из-за git.
И разные линуксовые инструменты неплохо помогают. И shell-скрипты.
Может быть, я неправ, но такие вещи логичнее делать на уровне сборочных файлов, а не исходных текстов программы.
Версия действительно не та, но посмотреть доводилось.
У меня сложилось впечатление, что это одни разговоры.
Тут - каждому своё. Заказчику нравится qmake и qtcreator.Hephaestus писал: ↑18.01.2021 22:41Может быть, я неправ, но такие вещи логичнее делать на уровне сборочных файлов, а не исходных текстов программы.
Вы это просто не пробовали, видимо. Этот RC файл команда из Qt, то рекомендуют создавать самостоятельно, то с помощью хитро названных дефайнов. Как по мне, так лучше иметь предсказуемое окружение, чем однажды увидеть, что в свойствах exe-файла, например, отсутствует копирайт. Или версия файла становится 0.0.0.0. Внезапно.Hephaestus писал: ↑18.01.2021 22:41В этом смысле генерация чего-то там в RC (да ещё программа для генерации) на первый взгляд выглядит излишеством.
С точки зрения организации рабочего процесса (такой, как сейчас принято) это неправильный подход. Сборка не должна влиять на исходники, а у Вас получается, что для каждой сборки должен делаться дополнительный коммит. Нумерация сборок происходит в системе непрерывной интеграции. При сборке он уже должен как-то подставляться. Самый простой вариант — использовать средства сборочной системы.
Код: Выделить всё
const unsigned major = ${CMAKE_VERSION_MAJOR};
const unsigned minor = ${CMAKE_VERSION_MINOR};
const unsigned patch = ${CMAKE_VERSION_PATCH};
const unsigned build = ${BUILD_NUMBER};
const char *version = "${CMAKE_VERSION}.${BUILD_NUMBER}";
Код: Выделить всё
project(myproject VERSION 1.2.3)
option(BUILD_NUMBER "sequential nubmer of build in CI" 0)
configure_file(version.cc.in version.cc)
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Кому она не должна? Если бы это делалось самим qtcreator (я имею в виду нумерацию версий), причём нормально минимум для трёх операционных систем, то я был бы только рад.Bizdelnick писал: ↑18.01.2021 23:53Сборка не должна влиять на исходники, а у Вас получается, что для каждой сборки должен делаться дополнительный коммит. Нумерация сборок происходит в системе непрерывной интеграции.
Вы тут это самое "3" можете забыть изменить и заказчик оторвёт голову за дополнительные траты на выпуск оповещения на изменение технической документации.
Ну так не забывайте. Как будто #define PATCH нельзя забыть изменить.
Я просто не знаю, как это делается в qmake, и мне лень с ним разбираться (ну не нравится он мне). Это не значит, что в нём нельзя сделать аналогично. Извините, что привёл чересчур конкретный пример для иллюстрации общей идеи.
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Которые, стало быть, этого не умеют?
Qt я действительно не пробовал.
Вы сами спросили, как правильнее:
и на уровне сборки - это действительно правильнее.