Как поместить информацию о версии в многоплатформенную программу * nix и win32? - PullRequest
0 голосов
/ 16 июля 2009

Я хочу знать, что является стандартным способом сделать это.

В настоящее время я думаю добавить ряд определений в заголовочный файл и добавить этот файл в основной файл ресурсов win win32 для обновления ресурса версии в win32 и в * nix сделать некоторые глобальные функции для возврата этой информации.

и в Windows сделать установочный файл MSI также отражают ту же версию.

Ответы [ 2 ]

0 голосов
/ 20 июля 2009

Поскольку мы хотели избежать дополнительных затрат на изменение "version.cpp" или его эквивалента каждый раз, когда мы нажимаем на сборку - и, таким образом, тратим время на выполнение хотя бы одной компиляции и ссылки - мы модифицируем двоичный файл после сборки.

Если вы выводите, например, на Исполняемые файлы формата ELF или PE, вы можете использовать некоторые базовые знания ELF или PE и карту компоновщика, чтобы выяснить, что заменить, в противном случае вы можете сканировать двоичный файл в поисках заданного шаблона (мы используем что-то вроде статического константного символа VERSION [] = "[VERSIONBLOCK xxxxxxxxxxxxx]";) и заменить часть (например, часть xxxx выше) соответствующей информацией:

  • дата и время сборки
  • сборка машины
  • имя пользователя
  • выход, например svnversion

Обратите внимание, что это не будет работать очень хорошо, если ваши двоичные файлы подписаны или сжаты до этого шага, но обычно вы можете спроектировать процесс сборки так, чтобы подписывание / сжатие происходило после этого шага.

Я уверен, что вариант этого может быть расширен, чтобы охватить метаданные версии Win32 PE, а также любую строку встроенной версии.

0 голосов
/ 17 июля 2009

Звучит как разумный способ сделать это. Я не думаю, что есть стандартный способ сделать это; нет никаких реальных стандартов для отчетов о версиях, которые являются кросс-платформенными.

...