2026/03/04(水) [n年前の日記]
#1 [nim] Nimの勉強中。その2
プログラミング言語 Nim について勉強中。環境は Windows11 x64 25H2 + Nim 2.2.8 64bit。
◎ スクリーンセーバを作ってみた :
Nim 2.2.8 64bit を使ってWindows用のスクリーンセーバを作ってみた。
_mieki256/ssnimsample: Nim言語製のWindows用スクリーンセーバのサンプル
ほとんどの部分をAI(Google Gemini)に作ってもらったような気もするけれど、途中で嘘を言い出すから不具合の原因を調べて修正するのが大変だった…。
_ssnimsample.nim 内の render() を書き換えれば独自のスクリーンセーバを作れるかなと…。
スクリーンセーバ名は、 _resource.rc 内で指定しているので記述を変更すればOK。
とりあえずNim言語を使ってもWindows用のスクリーンセーバを作れそうだと分かった。
_mieki256/ssnimsample: Nim言語製のWindows用スクリーンセーバのサンプル
ほとんどの部分をAI(Google Gemini)に作ってもらったような気もするけれど、途中で嘘を言い出すから不具合の原因を調べて修正するのが大変だった…。
- ウインドウの生成には winim を使用。
- フルスクリーン表示、プレビュー画面表示は OpenGL を使用。
_ssnimsample.nim 内の render() を書き換えれば独自のスクリーンセーバを作れるかなと…。
スクリーンセーバ名は、 _resource.rc 内で指定しているので記述を変更すればOK。
とりあえずNim言語を使ってもWindows用のスクリーンセーバを作れそうだと分かった。
◎ nim.cfgについて :
Nimでコンパイルする際、一々コンパイルオプションをつけて作業するのが面倒臭い。
batファイルを作って対応してたけど、もうちょっといい方法はないか。
nim.cfg なるものがあるらしい。コンパイルオプションを nim.cfg に列挙しておけば、nim c hoge.nim と打つだけで、そのコンパイルオプションを利用してくれるのだとか。
今回は以下のような nim.cfg になった。
nim.cfg
nim c hoge.nim と打ったら反映された。
nim c -d:release -d:strip --opt:size --passL:"resource.res" --app:gui main.nim
batファイルを作って対応してたけど、もうちょっといい方法はないか。
nim.cfg なるものがあるらしい。コンパイルオプションを nim.cfg に列挙しておけば、nim c hoge.nim と打つだけで、そのコンパイルオプションを利用してくれるのだとか。
今回は以下のような nim.cfg になった。
nim.cfg
--app:gui -d:release -d:strip --opt:size --passL:"resource.res"
- --app:gui ... GUIアプリを作るための指定。実行時にコンソールが出ない。
- -d:release ... デバッグ情報を削除したり、最適化したりする。
- -d:strip ... デバッグシンボル情報を削除する指定
- --opt:size ... ファイルサイズが小さくなるように指定。
- --passL:"resource.res" ... リンカへの指定。この場合リソースファイル resource.res もリンクせよと指示してる。
nim c hoge.nim と打ったら反映された。
[ ツッコむ ]
以上です。