在Yesod应用程序中使用Paths_ *的`version`

时间:2014-07-20 16:50:37

标签: haskell yesod

我正在尝试在Yesod中编写一个返回应用程序版本的GET处理程序。

以下是处理程序的Haskell代码:

{-# LANGUAGE OverloadedStrings #-}

module Handler.Version where

import qualified Data.Text           as T
import           Data.Version        (showVersion)
import           Import
import           Paths_MyApp         (version)

getVersionR :: Handler Value
getVersionR = return $ object
    [ "version" .= T.pack (showVersion version) ]

我在Application.hs添加了一个导入:

import Handler.Version

routes中的一行:

/version VersionR GET

但运行cabal install时出现以下错误:

.../MyApp/dist/build/libHSMyApp-0.1.0.a(Version.o):(.text+0xda5):
   undefined reference to `MyAppszm0zi1zi0_PathszuMyApp_version1_closure'

我怀疑.cabal文件中缺少某些内容,但我不确定是什么。我在Handler.Version部分添加了exposed-modules,但我想知道是否需要以某种方式提及Paths_*文件。

1 个答案:

答案 0 :(得分:2)

解决:

我添加了

Paths_MyApp

exposed_modules文件的.cabal部分。它现在可以正确编译。