LoginSignup
2
1

More than 5 years have passed since last update.

Go + andlabs/uiでGUIアプリをクロスコンパイルする方法

Posted at

概要

ポイントまとめ

  • GoでGUIを作る
  • GUIライブラリはandlabs/uiを使う
  • linuxでlinux/windows/macに対してクロスコンパイルする

リポジトリ: https://github.com/contribu/equalizer-apo-translator

やりたかったこと

Windows + GUI + 商用利用 + dynamicリンクなし + ビルド環境/方法をソースコードで管理

を実現したかった。

技術選択

C#は.Netに依存してしまう。今なら大概の環境で動くかもしれないが、少し前は.Netが入っていない場合とかで動かなかったので不採用。

Delphiは、商用利用可能なバージョンを持っていなかったので不採用。
ビルド環境/方法をソースコード管理する方法も知らない。

Lazarusはできたかもしれないが、試していない。

Goはdynamicリンクなしにできることを聞いていた。
GUIライブラリを調べたら、andlabs/uiはGTKに依存しているらしいが、windows向けビルドなら実行時に依存なしにできるらしいことがわかった。
andlabs/uiにはクロスコンパイル用のdockerが用意されていることもわかった。
Goにした。

Go + andlabs/uiでGUIアプリをクロスコンパイルする方法

基本

andlabs/uiの使い方は、公式ページを参照。
https://github.com/andlabs/ui
examplesディレクトリの中を見ると使い方が分かる。

クロスコンパイル

クロスコンパイル用のdocker image

以下にandlabs/uiのクロスコンパイル用のdockerがあることが書いてある。
https://github.com/andlabs/ui/wiki/Building-and-Cross-Compilation
https://github.com/magJ/go-ui-crossbuild/

circleciでクロスコンパイルする方法

これを参照。
https://github.com/contribu/equalizer-apo-translator/blob/master/.circleci/config.yml

注意点

  • クロスコンパイル用のdockerイメージが最後にビルドされたのは、2年前(多分2017年くらい)
  • なので、ライブラリとかが古い
  • docker imageの再ビルドが面倒だったので、そのまま使ったが、一部のライブラリはアップデートする必要があった(.circleci/config.yml参照)
  • クロスコンパイルのコマンドの引数指定方法はよくわからなかったので、スクリプトのソースコードを見て、うまく動くように与えた
  • .circleci/config.ymlに記載されているgo-bindataやlreleaseは、このアプリ特有の処理なので、無視してください
  • macのビルドは動きませんでした。推測ですが、クロスコンパイル用のdockerイメージが古いからかもしれません。
  • linuxのビルドが動くかどうかは試していません。
2
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1