2010-05-23 23 views
57

Kablolu programımın --version anahtarına sahip olmasını istiyorum.Haskell programım veya kütüphanem sürüm numarasını nasıl bulabilir?

Aynı sürümü .cabal dosyasında bulunduğunu bildirmek isterim.

Sürüm numarasını, Haskell kaynak kodunun yanı sıra .cabal dosyasında ayrıca güncellemek zorunda kalırsam, sonunda bunları eşitlemeden çıkartacağım.

Programım, cabal altında derlenmiş iken, sürüm numarasını .cabal dosyasından nasıl alabilirim?

cevap

76

Bu Cabal ile çok iyi desteklenir. (Xmonad itibaren) aşağıdaki gibi:

İthalat Paths_$myprogram - Bir dosya Cabal bir birlikte .cabal dosyadan meta sürü oluşturur taşıma sürüm numaraları için modülü:

import Paths_xmonad (version) 
import Data.Version (showVersion) 

bir print cümlesi ekleyin dist/build/autogen/

yılında, Cabal'ın oluşturulan Yollar dosyası aşağıdaki değerleri içerir Genelde

case args of 
    ["--version"] -> putStrLn ("xmonad " ++ showVersion version) 

: Paths_$myprogram tarafından sağlanan 'versiyonu' alanını yazdırmak

version, 
getBinDir, getLibDir, getDataDir, getLibexecDir, 
getDataFileName 
+7

Bu cevaptan 5 yıl sonra, bunun yeni Yığın oluşturma aracı altında da işe yaradığı belirtilmelidir. Tek fark, Paths dosyasının '.stack-work/dist/x86_64-osx/Cabal-1.22.4.0/build/autogen /' ('x86_64-osx 'kısmı mimarinize göre değişir) gibi bir konumda olmasıdır. . –

+2

"ld, döndürülen 1 çıkış durumu" nu engellemek için .cabal'inizdeki "diğer modüllere" 'Paths_ $ programımı 'koymayı unutmayın. – Sophie

İlgili konular