mieki256's diary



2026/01/27(火) [n年前の日記]

#2 [lazarus] Lazarusでビルド後にコマンドを実行

Windows11 x64 25H2 + Lazarus 4.4 で、ビルド後にコマンドを実行したい。.exe を .scr にリネームコピーしたい。

Delphi はビルド後に指定したコマンドを実行できるけど、Lazarus も使えるのだろうか? 調べてみたら、使えそう。


これでなんとかなりそう。

使えるマクロ名が分からない :

コマンドを記述する際に使えるマクロ(?)名が分からない…。一応、以下のマクロは使えそうだと分かったけれど…。
  • $(TargetFile) : 生成される .exe のフルパス。
  • $(ProjPath) : プロジェクトフォルダのフルパス。最後に区切り文字 "\" が含まれている。

しかし、拡張子を除いた生成ファイル名のマクロがあるんだか、ないんだか…。

AIに尋ねたら、「いっそファイル名を直接書いちまえよ。それなら間違いないぞ」と言ってきた。それはまあ、たしかに…。以下にしてみたら一応目的は果たせた。

cmd /C copy /Y "$(TargetFile)" "$(ProjPath)sslazarus1.scr"


_IDE Macros in paths and filenames - Free Pascal wiki

む? もしかして、$NameOnly() を使えば拡張子を除いたファイル名だけ取り出せないか…?

cmd /C copy /Y "$(TargetFile)" "$(ProjPath)$NameOnly($(TargetFile)).scr"

これで実現できたかも。

文字化けについて :

IDEの下のほうにメッセージが表示されているけれど、右クリックして「プロジェクト次の後にコマンドを実行:について」を選ぶと、実際にどんなコマンドが実行されたのか確認できる。もし、「(不明なマクロ)」という記述が見えた場合はマクロ名の指定で失敗してる。

文字化けしてる感じのメッセージも表示されているけれど…。たぶん copyコマンドが出力しているメッセージと、出力ウインドウの文字コードが違うのだろう…。

AIに尋ねてみたら「PowerShellを使えばメッセージは出ないで」と言ってきた。DOS窓で以下を打ってみたら、たしかに処理はされつつメッセージも出ないように見える。

powershell -command "Copy-Item 'sslazarus1.exe' 'sslazarus1.scr' -Force"

Lazarus上で指定するなら以下になるのかな…。

powershell -command "Copy-Item '$(TargetFile)' '$(ProjPath)$NameOnly($(TargetFile)).scr' -Force"

これでも一応動作しているように見える。

以上です。

過去ログ表示

Prev - 2026/01 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project