実行M-x compile
すると、新しいサブシェルが生成され、コンパイルコマンドが実行されます。コンパイルコマンドが戻るとすぐに、シェルプロセスは強制終了されます。これがほとんどの場合に望ましい理由はわかりますが、現在は役に立たない状況にあります。
現在、専用のビルド環境で作業しています。コンパイラーを実行する前に、ビルドをセットアップするためにいくつかの初期手順を実行する必要があります。環境が持続する限り、セットアップ手順を1回だけ実行する必要があります。しかし、それを使用M-x compile
すると、コンパイルまたは再コンパイルするたびに手順を実行する必要があることを意味します。
バックグラウンドで持続するサブシェルを生成する方法はありますか?一つM-x compile
とM-x gdb
彼らはシェルプロセスを実行する必要があるたびに使用することができますか?
動機:
xcc
特別なプラットフォーム用のCコードをビルドするプログラム(これをと呼びます)があります。コードをビルドするには、まずプロンプトxcc
から始めtcsh
ます。
$ xcc
プログラムの読み込みに10秒以上かかり、インタラクティブプロンプトでコマンドを入力できます
xcc>> add target myprogram
xcc>> set source myprogram $PROJDIR/src/
xcc>> set includes myprogram $PROJDIR/include/
xcc>> set type myprogram primitive
xcc>> set inputs myprogram int8,int8
xcc>> set outputs myprogram fix16,fix16
xcc>> build myprogram
上記の手順はカスタムマクロに組み込むことができるbuildmyprog.macro
ので、シェルから直接、またはemacsから実行できます。M-x compile
$ xcc buildmyprog.macro
このアプローチの主な問題は、xcc
コンパイルが始まるまでにプログラムのロードに10秒かかることです。私はすべての時間、私は私が実行し始めていることをコンパイルし、余分な10秒待っているの疲れ十分に得xcc
にansi-term
別のバッファでは。コードを変更して保存した後、ansi-term
バッファに切り替えて実行します
xcc>> build myprogram
これは問題なく動作しますが、そのバッファーに切り替えるたびに、「プッシュするだけでF7
コンパイルコマンドが既に実行中のインスタンスに送信されたら、すばらしいと思いませんxcc
か?」
comint
はあなたの環境のために派生モードが必要だと思います。あなたが冒険心を持っているなら、ここにそれを書くためのガイドがあります。
comint-send-input
です。これは基本的に手動で行うものであり、elispへの変換はそれほど難しくありません(特に、comintの設定と比較すると)。