Linuxのデスクトップとサーバーについて扱います。win64アプリケーションクロスビルドでアイコン・プロパティ・リソースを付けるGtk3/Cで書いたベクターグラフィック・エディタのvecterionを、Ubuntu16.04ホストでwin64ターゲットにクロスビルド中。アイコン・プロパティ・リソースを付けた作業のメモです。以下のようなコードで実現できます。そのICONこれも実は文字列"ICON"とファイルパス以外は大した意味はないとか、他にもオプションが付けられるとかあるようです。Win32アプリケーションプログラミングをマスターしたいわけではないので.rcファイルの記述はスルー。.icoファイルですが、GIMPでいい加減に縮小するだけならいい加減に作れます。64px,32px,16pxの順にレイヤ複製->レイヤ縮小を繰り返して、最後に.icoで保存しようとすると、アイコン形式画像を保存するウィザードが出てきてGIMPが良いようにしてくれます。(64pxは48pxのほうがいいかもしれないけれどしていません。512pxもMacOSX対応にしては中途半端。)Ubuntu16.04環境ではnautilusもeogもこの.icoを正しく描画できませんでしたが、Windowsではとしてはきちんとアプリケーションアイコンとして表示されたので問題ありません。Windowsリソースのオブジェクト作成します。クロスビルドはbashスクリプトにしています。テキストのソース)をwindresでオブジェクトに変換します。Makefileに入れるより楽そうで、やってみると、ビルド時間にほぼ影響がなかったので。リソースのオブジェクトをリンクします。Windowsクロスビルド以外ではリソースのオブジェクトのパスを空文字にします。プログラミングgtk3アプリケーションのクロスビルド(Windowsターゲット、Linuxホスト)した際のメモ開発中のGtk3/Cによるベクターグラフィック・エディタであるvecterionの、Windowsx64ターゲット、Linuxホストでクロスビルド作業中。動作するところまでは行きました。その時のトライアンドエラーというか問題と解決のざっとしたメモです。フォーマット文字列中のsize_tの変換指定を%zuにしていなかったなど)、ついでに修正することができた。原因を追い切ってはいません。Windows版の優先度はその程度です。‘uid_t’詳細を忘れてしまった。MinGW64のWindowsターゲットクロスビルドであるにも関わらず、pkg-configがLinuxのライブラリをリンクして、起こっていたような気がする。defaultに置いたassert(false)を解釈してくれない「到達しないソース行」の検出あたりが、linuxのgccとMinGWで違うようで(バージョンの違いかもしれない)、リターンエラーのメッセージが出る。assert()のラッパを、新規作成したabort()のラッパ関数に置き換えて解決。size_t型のリテラル間違いsize_tを"%lu"のままにしてしまうミス。修正後、正しい指定の"%zu"を受け付けない。一時的には、出力を潰して対処した。追加で"%zu"が使えるようになり解決。sscanfの非C11標準(posix標準)リテラルの使用sscanf()にて、リテラル記述に"%m"が存在しないとされて使えない。gcc(MinGW)のバージョンが原因でもないように見えた。libxml2の引数型の間違い関数の引数の型が合わないビルドエラー。Web上のドキュメントではconst付きで記載されているが、実際にヘッダのソースコードを当たってみると、constなしになっている。constを外して解決。windowsの古いバージョンの未実装関数gtk3-3.10.4がこの関数を未実装であるためエラー。同名のラッパ関数を定義、またはターゲットにより関数呼び出しを取り除くマクロを定義して解決。libgtkのsvgのローダsvgが開かない以前も見ていた不具合。相対パスへの書き換えとライブラリの追加パッケージングで解決。Windows環境でのマウスポインタ変更windowへのポインタを取ろうとして、Windows環境で取れないため、マウスカーソル周りの処理でエラー。マウスカーソル周りをWindowsターゲットのビルドで無効にして一時的に解決。その後、あらためて確認したらビルドが通りました。ヘッダなどが必要だったのかもしれない。libgtkで一部のダイアログを出すのに必要なファイルの追加Save操作時にエラーダイアログ。パッケージにschemasファイルを追加して解決。シューズを買いました。メインの靴がアシックスウォーキングで街歩き用なのですが、これまではこれで高尾山などの軽い山も登っていました。今回、靴底があまりに摩耗したこともあってアシックスウォーキングを買い替えたのですが、ついでに消耗が激...100均の液晶保護フィルムを13インチのノートPCに貼ってみましたノートPCの液晶保護フィルムが100円で買えるなんて、良い時代になりました。ダイソーに行ったら、ノートPCで使えそうな液晶保護フィルムがあったため、衝動的に購入。A4サイズと書いてあります。(HTMLでPOST、そしてhidden)formでユーザの入力やファイルを送信する際、IDを付与したり、送信した情報を紐付けるか、などの情報を一緒に送信したい場合があります。その場合、ID情報はブラウザに表示しないのがベストです。ユーザに見せたり、編集してもらう必要はありません。オルタネイティヴは数あれど、小さな実験プロジェクトを始めるときに、簡単に使えるMakeは未だにビルドツールとして有力な選択肢だと思います。MakefileはUNIX環境、というかCLIツール群があることを前提にしているところがあります。