8

私はemacs23.1.50.1をCEDET1.0とECB2.40でセットアップしました(http://github.com/alexott/emacs-configs/blob/master/rc/emacs-rc-cedet.elのAlexOttsセットアップに大きく影響を受けています。彼のCedetの穏やかな紹介(http://alexott.net/en/writings/emacs-devenv/EmacsCedet.html)、Alexに感謝します)。それは非常にうまく機能しますが、複数のプロジェクトで作業するときにコード完了とシンボル参照がどのように処理されるかについてもっと理解する必要があります。

私はこのような単純なedeプロジェクトを作成しました:

(ede-cpp-root-project "test"
                      :file "~/src/sw/anchor"
                      :include-path '("/Common")
                      :system-include-path '("~/include"))

このプロジェクトがロードされると、Semanticはプロジェクト構成で指定されたさまざまなディレクトリでのみ完了を検索しますか?

http://mmmyddd.freeshell.net/blog/Computer/Emacs/usecscopesemanticdbbackendに従って、cscopeをsemanticdbのバックエンドとして使用しました。emacsがエラーをスローせずにsemanticdb-enable-cscope-in​​-bufferを実行できますが、semanticがデータベースを使用しているかどうかはわかりません。プロジェクト定義にcscope.outへの参照を追加して、現在のコンテキストで参照を検索するファイルをより細かく制御できますか?

いくつかの奇妙な点:

新しいソースファイルを開こうとすると、「適用:プログラムを検索しています:そのようなファイルまたはディレクトリはありません、グローバルです」というエラーが表示され、何も起こりません。もう一度開こうとすると大丈夫です。

アンカーファイルをポイントしてプロジェクトを読み込もうとすると、次のエラーが発生します:「if:間違った型の引数:class-p、ede-cpp-root」

4

1 に答える 1

5

構成でエラーが発生した場合、最善の方法は次のとおりです。

M-x toggle-debug-on-error RET

問題のある領域を指すスタックトレースを取得します。多くの場合、これは構成の問題を特定するのに役立ちます。

CEDETは、すべてのファイルを1つのプロジェクトに関連付けようとし、そのバッファーで動作するすべてのコマンドは、そのプロジェクトの境界に制限されます。CScopeのサポートでは、EDEを使用してルートディレクトリを識別します。これは、cscope.outファイルの検索に役立ち、補完ツールと参照ツールの両方に関連しています。

もちろん、例外はシステムのインクルードパスで、通常は/ usr/includeなどです。これは、GCCサポートで計算されるデフォルトのシステムインクルードパスの拡張です。Cファイルの1つで、次のことができます。

M-x semantic-c-describe-environment RET

そして、それはセマンティックが何を使おうとするかを示すはずです。

CScopeがコード補完に使用されているかどうかを再確認するには、次の方法で確認できます。

M-x semanticdb-find-test-translate-path RET

リストの最後でCScopeのことを確認してください。

于 2010-10-21T01:37:29.733 に答える