Как мне указать время компиляции, определенное в Mercury? - PullRequest
1 голос
/ 15 марта 2019

Как мне указать время компиляции, определенное в Меркурии?

Я бы хотел, чтобы система сборки считала номер версии из файла конфигурации и передала его в модуль для доступа по предикатам и функциям.

Например, в C я бы сделал что-то вроде: gcc -DVERSION = "1.2.0", а затем использовал бы вновь определенный макрос VERSION в источнике.

1 Ответ

0 голосов
/ 18 марта 2019

Zoltan Somogyi в списке рассылки пользователей Mercury Ответил:

[Определения времени компиляции, как в C, невозможны в Mercury], потому что это часть функциональности, которая редко требуется, чего легко добиться без специальной поддержки внутри самого Mercury.

....

[Для вашей конкретной цели, добавив номер версии из системы сборки] Есть что-то вроде файлаименованный version.m.in, содержащий

: - версия модуля.

: - интерфейс.: - func version = string.

: - реализация.version = "@VERSION @".

, а затем создайте скрипт shell или sed, который создает version.m из version.m.in, заменив @ VERSION @ фактической строкой версии.Если вы хотите, чтобы строка версии изменялась без участия человека (например, для отображения текущей даты), вы должны добавить правило mmake для автоматического создания version.m из version.m.in в соответствующие моменты времени.

...