1 件の投稿を表示中 (合計 10 個)
  • 作成者
    投稿
  • #30316
    Tobari
    参加者

    お世話になります。
    Visual Studio 2019を利用しています。

    コマンドプロンプト上でコンパイルするとき
    最初に環境設定用バッチファイル
    %comspec% /k “C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat”
    を起動してから
    cl コンパイルするファイル名
    と実行しないといけないのですが

    EmEditer のマクロを使って上記バッチファイルを起動してから編集中のファイルをコンパイルしたいのですが
    やり方が思いつきません。いい方法がありませんでしょうか?
    よろしくお願いします。

    #30318
    snow
    参加者

    こんにちは。
    同様のことを実現するのに

    var s = new ActiveXObject(“WScript.Shell”);
    s.Environment(“PROCESS”).Item(“ARG”) = document.FullName;
    s.Run(“aaa.bat”);

    のようなマクロを用いています。
    aaa.batの中で、%ARG% と書いてフルパスを展開します。

    #30319
    snow
    参加者

    上記、s.Run(“aaa.bat ” + document.FullName) でも行けたと思います。
    この場合は%1で展開できますね。
    (Photoshopのスクリプトとbatを共用したかった関係で環境変数経由にしたのでした)

    #30321
    Tobari
    参加者

    snow様回答ありがとうございます。
    ちょっと立て込んでて土曜日にトライしてみたいと思います。
    結果も報告しますね。
    本当にありがとうございました。

    #30329
    Tobari
    参加者
    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ファイルは存在するのですが。
    マクロの作り方が間違っているのでしょうか?

    #30331
    snow
    参加者

    こんばんは。
    問題は2つありました。
    ・Auxiliaryの前のバックスラッシュがエスケープされていない。
    ・Run()に半角スペースを含むパスを渡しているので途中で切れている。

    s.Run('"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Auxiliary\\Build\\vcvars32.bat"');
    

    これでいかがでしょうか。
    (c:\\Progra~2\\Micros~2\\〜としても可能ですが、環境によって ~ の後ろの数字が違うと思います)

    #30333
    Tobari
    参加者

    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」をクリックするとエラーにならないのか
    わからなくなってしまいました。ここで手詰まりでした。
    以上報告でした。

    #30344
    snow
    参加者

    もしかして、「%~dp0vcvarsall.bat」がそのままファイル名だと思われたのでしょうか。
    「%~dp0」の部分は、%0(実行しているbat自身)のドライブとパスを示します。
    結局、実行しているvcvars32.batと同じディレクトリにあるvcvarsall.batのことです。

    …すでにEmEditorとは直接関係なくなっていますね(苦笑。

    #30345
    snow
    参加者

    もうひとつ、作業フォルダーはで

    s.CurrentDirectory = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community";
    

    で指定できると思います。

    #30346
    Tobari
    参加者

    snowさん
    お世話になります
    >…すでにEmEditorとは直接関係なくなっていますね(苦笑。
    そうですね。すみません。

    やりたかったのはコマンドプロンプトでコンパイルしないでEmEditerからコンパイルしてその結果をアウトプットに出力したかったのでした。
    難しいですね。もう少し調べてみます。作業フォルダーの指定方法教えてくださってありがとうございました。

1 件の投稿を表示中 (合計 10 個)
  • このトピックに返信するにはログインしてください。