2017-02-05 2 views
1

Если я скомпилирую исполняемый файл с помощью GHC cabal build, есть ли способ получить номер версии, как указано в файле проекта .cabal, изнутри функции main?Получение кабальной версии скомпилированной программы GHC?

Например, мы можем получить название основной программы с помощью:

import System.Environment 
main = do 
    progName <- getProgName 
    ... 

Можем ли мы как-то написать подобную функцию getProgVer получить Кабал определенный номер версии?

ответ

5

Да, вы можете:

import Paths_PKGNAME 

main = print version 

Cabal создаст модуль Paths_PKGNAME (где PKGNAME это имя пакета), который содержит среди прочего, версию пакета. Больше информации в users guide.

+0

Спасибо! Есть ли в файле '.cabal' конкретное поле, которое я могу использовать для' PKGNAME'? Я пробовал значения в 'Name:' ​​и 'executable:'. Но GHC говорит, что он не может загрузить интерфейс. – tinlyx

+0

Его поле 'name:' ​​в вашем .cabal, с '-' заменено на' _'. – adamse

+0

Очень приятно! Еще один вопрос: после добавления 'import Paths_PKGNAME',' cabal build' может успешно завершиться, но GHCi будет жаловаться: 'Не удалось загрузить интерфейс для 'Paths _...'. Есть ли способ исправить это? – tinlyx

Смежные вопросы