2017-10-12 13 views
4

私はWebサービスを呼び出すhaskellアプリケーションを開発中です。 stack buildでビルドするときは、アプリケーションは実際のプロダクションサーバーのURLをターゲットにしますが、デバッグするときはstack replで、アプリケーションはテストサーバーのURLをターゲットにします。haskellスタックを使用して本番環境とサンドボックス環境を切り替える

これは条件付きコンパイルで達成できると思いますが、-DDEBUG=1などのオプションをGHCiに渡すようにスタックを設定するにはどうすればよいですか?

多くのツール(Visual Studio、Xcode ...)は、プロジェクトの複数のビルド構成をサポートしています。スタックやキャバレーに相当するものはありますか?

答えて

3

これを実行する1つの方法は、実行時にSystem.Environment.getProgNameghcであるかどうかをチェックすることです。これは必ずしも信頼できるチェックではありません。なぜなら、実行ファイルは場合によっては別のものと呼ばれる可能性があるからです。スタックにインストールされた実行ファイルの場合はghcになりますが、システムにインストールされているghcsの場合は、ghc-8.0.1などとなります。だから、このアプローチはそれほど信頼できるものではありません。

.ghciファイルを追加することで、ghciを起動時に実行するコマンドが含まれています。私はこれをテストしていませんが、:set -DDEBUG=1をプロジェクトルートの.ghciに入れてもらえると思います。 chmod go-w .ghciで権限を調整する必要もあります。

+0

私は '.ghci'ファイルについて知りませんでした。私はあなたの提案を試して、それは動作します。どうもありがとうございました! – Pascal91

関連する問題