9

私は emacs を使用してコーディングとテキスト編集を行っています。新しいコーディング プロジェクトを作成するときは、単純に新しいフォルダーを作成し、そこにソース コードを追加します。

問題は、複数のフォルダーがある場合、先頭に戻ってメイクファイルを実行するのが難しいことです。

Eclipse や他の IDE のようなプロジェクト管理を行う良い方法はありますか?

4

12 に答える 12

7

M-x compileルートディレクトリから一度だけ。*compilation*これにより、呼び出されたディレクトリとパラメーターを記憶するバッファーが作成されます。

次に、再コンパイルする場合は、発行するだけM-x recompileです。これはどこからでも機能します。元のバッファーに戻り*compilation*、そのバッファーに格納されているディレクトリを使用して Makefile を見つけます。

プロジェクトのルート ディレクトリの外からコンパイルを発行する方法は他にもありますが、カスタマイズなしですぐに使用できるので、これを指摘したいと思います。他の多くの回答により、ソリューションは実際よりも複雑に聞こえました。

コンパイル バッファーのヒント

コンパイル バッファー内で入力C-c C-fすると、有効next-error-follow-minor-modeになるため、コンパイル バッファーのエラー間を移動しているときに、2 番目のウィンドウに元のソース バッファー内のエラーが表示されます。

M-nM-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}

このルールはファイルの構文をチェックしますが、コンパイルはしないので高速です。

于 2011-11-30T23:56:11.427 に答える
7

私はあなたの問題を知っています。ソースと同じフォルダーに Makefile があり、ソース バッファーにいる場合、'compile' は正しくビルドされます。

しかし、ソースが別のフォルダーにある場合、emacs は Makefile を見つけることができません。

1 つの解決策は、'default-directory' 変数を各ソース ファイルのファイル変数として設定することにより、Makefile の場所を指定することです。

これを行うには、ファイルの先頭に次のような行を追加します (そして再読み込みします)。

// -*- mode: C++; default-directory: "c:/somewhere/yourmakefiledirectory/" -*-
于 2009-04-15T04:50:46.177 に答える
5

私は通常、emacs 内からコンパイルすることはもうありませんが、make を実行するためだけにシェルをバッファーで実行できないのはなぜですか。そのシェルを最上位ディレクトリに保持します。

プロジェクト管理に関して、どのような機能をお探しですか?

于 2009-04-15T00:58:18.077 に答える
3

CEDET パッケージの EDE を使用しています。さまざまな種類のプロジェクトを維持できます。私はそれを使用して、カスタム compile-command と一緒に CMake を操作します (ここで見つけることができます- MyCompile 関数を参照してください)。

于 2009-04-15T05:37:40.980 に答える
2

最近、project-rootを使用してさまざまなディレクトリ ツリーを管理し始めました。F5 を (with-project-root (compile)) にバインドすると、default-directory は、呼び出すバッファーに基づいて、.emacs で指定したプロジェクトのルートに自動的に設定されます。からコンパイルします。

于 2009-04-15T04:53:19.387 に答える
1
  • デスクトップ ブックマーク、Dired ブックマーク、または Bookmark-List ブックマークを使用してプロジェクトを整理できます。Bookmark+を参照してください。

  • その他のオプションについては、プロジェクトのつらら のサポートも参照してください。

于 2011-09-05T05:26:54.367 に答える
1

何を求めているのか正確にはわかりませんが、 Speedbarを探している可能性があります。

于 2009-04-15T01:12:19.557 に答える
0

私が 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
于 2009-04-15T17:07:26.640 に答える
0

私は eproject を使用します。http://github.com/jrockway/eproject

SO の例を次に示します。優れた Emacs プロジェクト管理はどこかにありますか?

基本的にCEDETやproject-rootなどの機能を統一しています。プロジェクト定義をさまざまな方法で宣言し、統合 API を介してデータにアクセスできます。また、ibuffer の統合など、いくつかの素晴らしいシュガーも付属しています。(プロジェクトごとに ibuffer をフィルター処理し、バッファー名の横にあるプロジェクト名を確認するなど]

于 2009-06-11T23:30:33.550 に答える
0

言語によって異なります。JDE は優れた Java 環境であり、Distel は優れた Erlang 環境です。他のプラットフォームにも良い環境があると確信しています。ただし、概して、Eclipse などの IDE で行うよりも emacs でより多くの構成を行う必要があります。IMO、見返りはそれだけの価値があります。

于 2009-04-15T01:33:04.530 に答える
0

コンパイル コマンドのプロンプトが表示されたら、次のように入力します。

"cd <root> ; make"

頻繁に入力するのが面倒な場合は、「compile-command」変数に設定できますが、一度入力するとセッションで記憶されます。

于 2009-04-15T16:58:28.597 に答える