【GO】Windowsで複数ファイルのコンパイル


mainパッケージが複数あるときのコンパイルでワイルドカード(*)を使った指定をしたときに問題が起きたので、その対策方法メモです。

ついでにMakefileも作ります。

事前準備としてコマンドプロンプトでlinuxコマンドを使えるようにしておきます。

まぁWindowsでGO開発する人がいれば自然としているはず。

開発環境

パッケージを分けるほど大規模なプロジェクトは作っていないので、フォルダを分けてその中にmainパッケージのファイルを複数作っています。

以下のようなフォルダ構造です。

現象

mainパッケージが複数ある場合、すべてをコンパイル対象にする必要があります。

linuxならこれで通るんですが、エラーになってしまいます。

windowsのファイル情報取得部分で失敗しているみたいですね。

ちなみに全ファイルをべた書きするとコンパイルは通ります。

対策

べた書きで通るならべた書き風に出力するという安直な発想。

ls *.goの返値をgo runのパラメータに入れてます。

windowsで起きた問題をlinuxコマンドで解決しているのに凄い違和感。

まあ問題なく通るんですが普通にMakefile作ったほうが楽な気もする。

Makefile

Windowsでmakeするにはなにかしらを入れる必要があります。

Make for windowsをインストールしてパスを通すのが楽です。

簡易シェルとしてしか使わないので最低限書いてみる。

先ほどのようにlsコマンドの結果を変数(TARGETS)に入れていますが、テストプログラムが混入しないようにべた書きしてもいいと思います。

プロジェクトの親フォルダにbinを置いているので、そこにプロジェクト名と同じ実行ファイルを作る設定にしています。


コメントを残す

メールアドレスが公開されることはありません。