- 作成者投稿
- 2021年11月14日 11:37 am #30316Tobari参加者
お世話になります。
Visual Studio 2019を利用しています。コマンドプロンプト上でコンパイルするとき
最初に環境設定用バッチファイル
%comspec% /k “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat”
を起動してから
cl コンパイルするファイル名
と実行しないといけないのですがEmEditer のマクロを使って上記バッチファイルを起動してから編集中のファイルをコンパイルしたいのですが
やり方が思いつきません。いい方法がありませんでしょうか?
よろしくお願いします。2021年11月14日 9:34 pm #30318snow参加者こんにちは。
同様のことを実現するのにvar s = new ActiveXObject(“WScript.Shell”);
s.Environment(“PROCESS”).Item(“ARG”) = document.FullName;
s.Run(“aaa.bat”);のようなマクロを用いています。
aaa.batの中で、%ARG% と書いてフルパスを展開します。2021年11月14日 9:39 pm #30319snow参加者上記、s.Run(“aaa.bat ” + document.FullName) でも行けたと思います。
この場合は%1で展開できますね。
(Photoshopのスクリプトとbatを共用したかった関係で環境変数経由にしたのでした)2021年11月15日 7:56 pm #30321Tobari参加者snow様回答ありがとうございます。
ちょっと立て込んでて土曜日にトライしてみたいと思います。
結果も報告しますね。
本当にありがとうございました。2021年11月20日 5:45 pm #30329Tobari参加者var s = new ActiveXObject("WScript.Shell"); s.Environment("PROCESS").Item("ARG") = document.FullName; s.Run("C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\Auxiliary\\Build\\vcvars32.bat");
というマクロを作ったのですが
実行すると3行目でファイルが見つかりませんとでます。
BATファイルは存在するのですが。
マクロの作り方が間違っているのでしょうか?2021年11月21日 9:08 pm #30331snow参加者こんばんは。
問題は2つありました。
・Auxiliaryの前のバックスラッシュがエスケープされていない。
・Run()に半角スペースを含むパスを渡しているので途中で切れている。s.Run('"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat"');
これでいかがでしょうか。
(c:\\Progra~2\\Micros~2\\〜としても可能ですが、環境によって ~ の後ろの数字が違うと思います)2021年11月22日 10:38 pm #30333Tobari参加者snowさん。お世話になります。
色々調べてみました
コンパイル環境を整理したいのですが
Visual Studio 2019を利用しています。
コマンドプロンプト上でコンパイルするときWindowsのメニューからショートカット「x86 Native Tools Command Prompt for VS 2019」を起動します
このショートカットは
リンク先が
%comspec% /k “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat”
作業フォルダーが
“C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\”になってます。
これを起動するとコマンドプロンプトが立ち上がりその中で「lc Cファイル.c」として起動しなければなりません。
これを踏まえた上でsnowさんに教えてもらったマクロ
var s = new ActiveXObject("WScript.Shell"); s.Environment("PROCESS").Item("ARG") = document.FullName; s.Run("C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat");
の”C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat”という指定で
vcvars32.batが起動しているところまではわかったのですが、
vcvars32.batの内容が
@call "%~dp0vcvarsall.bat" x86 %*
となってましてここで”%~dp0vcvarsall.bat”ファイルが見つからずエラーになってたみたいです。
ファイル名をすべての場所から検索したのですがファイルは見つからなかったです。そもそもなんでショートカット「x86 Native Tools Command Prompt for VS 2019」をクリックするとエラーにならないのか
わからなくなってしまいました。ここで手詰まりでした。
以上報告でした。2021年11月26日 3:34 pm #30344snow参加者もしかして、「%~dp0vcvarsall.bat」がそのままファイル名だと思われたのでしょうか。
「%~dp0」の部分は、%0(実行しているbat自身)のドライブとパスを示します。
結局、実行しているvcvars32.batと同じディレクトリにあるvcvarsall.batのことです。…すでにEmEditorとは直接関係なくなっていますね(苦笑。
2021年11月26日 6:29 pm #30345snow参加者もうひとつ、作業フォルダーはで
s.CurrentDirectory = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community";
で指定できると思います。
2021年11月26日 9:15 pm #30346Tobari参加者snowさん
お世話になります
>…すでにEmEditorとは直接関係なくなっていますね(苦笑。
そうですね。すみません。やりたかったのはコマンドプロンプトでコンパイルしないでEmEditerからコンパイルしてその結果をアウトプットに出力したかったのでした。
難しいですね。もう少し調べてみます。作業フォルダーの指定方法教えてくださってありがとうございました。2021年12月1日 6:07 pm #30352snow参加者ひとまずvcvars32.batの出力結果をアウトプットバーに出力ということですと、以下で出てきます。
var s = new ActiveXObject('WScript.Shell'); OutputBar.clear(); OutputBar.Visible = !0; var o = s.Exec('"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat"'); OutputBar.writeln(o.StdOut.ReadAll()); OutputBar.writeln(o.StdErr.ReadAll());
2022年5月6日 9:13 am #30535Tobari参加者自己報告です
江村様と直接やりとりをしたところ
ヘルプファイルに書いてありましたEmEditor ホーム – EmEditor ヘルプ – よくある質問と回答集 – ツール
Q. 外部ツールの定義例を教えてください。
の回答にVisual C++ でコンパイル
[コマンド] %WinDir%\system32\cmd.exe
[引数] /k “C:\Program Files\Visual Studio\Vc7\bin\vcvars32.bat”&&cl $(Path)
[初期ディレクトリ] $(Dir)
[アイコン パス] C:\Program Files\Visual Studio\Common7\IDE\devenv.exe
[ファイルを保存] をチェックこれでコンパイルできるようになりました
ご迷惑おかけしました - 作成者投稿
- このトピックに返信するにはログインしてください。