私は emacs を使用してコーディングとテキスト編集を行っています。新しいコーディング プロジェクトを作成するときは、単純に新しいフォルダーを作成し、そこにソース コードを追加します。
問題は、複数のフォルダーがある場合、先頭に戻ってメイクファイルを実行するのが難しいことです。
Eclipse や他の IDE のようなプロジェクト管理を行う良い方法はありますか?
M-x compile
ルートディレクトリから一度だけ。*compilation*
これにより、呼び出されたディレクトリとパラメーターを記憶するバッファーが作成されます。
次に、再コンパイルする場合は、発行するだけM-x recompile
です。これはどこからでも機能します。元のバッファーに戻り*compilation*
、そのバッファーに格納されているディレクトリを使用して Makefile を見つけます。
プロジェクトのルート ディレクトリの外からコンパイルを発行する方法は他にもありますが、カスタマイズなしですぐに使用できるので、これを指摘したいと思います。他の多くの回答により、ソリューションは実際よりも複雑に聞こえました。
コンパイル バッファー内で入力C-c C-f
すると、有効next-error-follow-minor-mode
になるため、コンパイル バッファーのエラー間を移動しているときに、2 番目のウィンドウに元のソース バッファー内のエラーが表示されます。
M-n
M-p
コンパイルバッファのエラー間を移動します。
既にソース バッファーにいて、そこでエラー間を移動したい場合は、M-g n
、またはと入力しM-g p
ます。
入力M-x flymake-mode
時にその場で構文チェックを行うには、入力します。構文エラーが赤色で強調表示されます。マウスでホバーすると、エラー メッセージが表示されます。
flymake を機能させるには、makefile に check-syntax ルールを追加する必要があります。
C++ の例:
check-syntax:
g++ -o nul -S ${CXXFLAGS} ${CHK_SOURCES}
このルールはファイルの構文をチェックしますが、コンパイルはしないので高速です。
私はあなたの問題を知っています。ソースと同じフォルダーに Makefile があり、ソース バッファーにいる場合、'compile' は正しくビルドされます。
しかし、ソースが別のフォルダーにある場合、emacs は Makefile を見つけることができません。
1 つの解決策は、'default-directory' 変数を各ソース ファイルのファイル変数として設定することにより、Makefile の場所を指定することです。
これを行うには、ファイルの先頭に次のような行を追加します (そして再読み込みします)。
// -*- mode: C++; default-directory: "c:/somewhere/yourmakefiledirectory/" -*-
私は通常、emacs 内からコンパイルすることはもうありませんが、make を実行するためだけにシェルをバッファーで実行できないのはなぜですか。そのシェルを最上位ディレクトリに保持します。
プロジェクト管理に関して、どのような機能をお探しですか?
CEDET パッケージの EDE を使用しています。さまざまな種類のプロジェクトを維持できます。私はそれを使用して、カスタム compile-command と一緒に CMake を操作します (ここで見つけることができます- MyCompile 関数を参照してください)。
最近、project-rootを使用してさまざまなディレクトリ ツリーを管理し始めました。F5 を (with-project-root (compile)) にバインドすると、default-directory は、呼び出すバッファーに基づいて、.emacs で指定したプロジェクトのルートに自動的に設定されます。からコンパイルします。
デスクトップ ブックマーク、Dired ブックマーク、または Bookmark-List ブックマークを使用してプロジェクトを整理できます。Bookmark+を参照してください。
その他のオプションについては、プロジェクトのつらら のサポートも参照してください。
何を求めているのか正確にはわかりませんが、 Speedbarを探している可能性があります。
私が Java でこれを行ったとき、私は ANT を使用しました。ANT はこれを「-find」スイッチでエレガントに処理しました。
事実上、現在のディレクトリで build.xml ファイルを探し、それが見つかるまで調べました。ディレクトリ構造が強制されているため、特に Java プロジェクトでは非常に便利です。
Make の場合、同様の置換を作成します。
#!/bin/sh
# mymake -- my "hunt the makefile" make command
if [ -f Makefile ]
then
exec make
else
cur=`pwd`
if [ $cur = "/" ]
then
echo "Can not find Makefile"
exit 1
fi
newdir=`dirname $cur`
cd $newdir
exec mymake
fi
私は eproject を使用します。http://github.com/jrockway/eproject
SO の例を次に示します。優れた Emacs プロジェクト管理はどこかにありますか?
基本的にCEDETやproject-rootなどの機能を統一しています。プロジェクト定義をさまざまな方法で宣言し、統合 API を介してデータにアクセスできます。また、ibuffer の統合など、いくつかの素晴らしいシュガーも付属しています。(プロジェクトごとに ibuffer をフィルター処理し、バッファー名の横にあるプロジェクト名を確認するなど]
言語によって異なります。JDE は優れた Java 環境であり、Distel は優れた Erlang 環境です。他のプラットフォームにも良い環境があると確信しています。ただし、概して、Eclipse などの IDE で行うよりも emacs でより多くの構成を行う必要があります。IMO、見返りはそれだけの価値があります。
コンパイル コマンドのプロンプトが表示されたら、次のように入力します。
"cd <root> ; make"
頻繁に入力するのが面倒な場合は、「compile-command」変数に設定できますが、一度入力するとセッションで記憶されます。