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

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

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

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


person Charles Shuller    schedule 15.03.2019    source источник


Ответы (1)


Золтан Шомоджи из списка рассылки пользователей Mercury ответил:

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

....

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

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

:- интерфейс. :-версия функции = строка.

:- реализация. версия = "@ВЕРСИЯ@".

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

person Charles Shuller    schedule 18.03.2019