2012-01-27 15 views
4

私はCEDETをしばらく使っていますが、一般的にはうまく機能します。 私はOpenCV 2.3(freshmeat_linux/Linux)用のCからC++への移行を進めています。私はemacs24をCEDETの最新の開発版で使用しています。OpenCV C++インタフェース用のEmacs CEDET

次のように、いくつかのシンボルとそのメンバーを解析することができません:KeyPoint, Mat,など

機能記号の多くは、line(), imshow(), imread()ような、しかし、解析されるなど、私が上で助けを探しています

私の設定や、opencv C++ apiのセットアップに成功した人のデバッグ方法。ここで

は私の関連cedetの設定です:

;; brian-cedet.el 
;; Contains my personal configuration for CEDET 

;; Loads for CEDET 
(load-file "/home/terranpro/code/cedet/common/cedet.el") 

(add-to-list 'Info-default-directory-list 
      (expand-file-name "~/code/cedet/common")) 
(add-to-list 'Info-directory-list 
      (expand-file-name "~/code/cedet/common")) 

(add-to-list 'Info-directory-list 
      (expand-file-name "~/code/cedet/semantic/doc")) 
(add-to-list 'Info-directory-list 
      (expand-file-name "~/code/cedet/eieio")) 
(add-to-list 'Info-directory-list 
      (expand-file-name "~/code/cedet/speedbar")) 
(add-to-list 'Info-directory-list 
      (expand-file-name "~/code/cedet/cogre")) 
(add-to-list 'Info-directory-list 
      (expand-file-name "~/code/cedet/ede")) 
(add-to-list 'Info-directory-list 
      (expand-file-name "~/code/cedet/srecode")) 

(require 'ede) 

(global-ede-mode t) 

;;(semantic-load-enable-minimum-features) 
(semantic-load-enable-code-helpers) 
;;(semantic-load-enable-gaudy-code-helpers) 
(semantic-load-enable-excessive-code-helpers) 
;;(semantic-load-enable-semantic-debugging-helpers) 

(require 'semantic-ia) 

(require 'semantic-gcc) 

(require 'semantic-sb) 

(require 'semanticdb) 
(global-semanticdb-minor-mode 1) 

(require 'semanticdb-global) 
(semanticdb-enable-gnu-global-databases 'c-mode) 
(semanticdb-enable-gnu-global-databases 'c++-mode) 

(require 'semantic-c) 

(setq semantic-load-turn-useful-things-on t) 

(semantic-add-system-include "/usr/include/glib-2.0" 'c-mode) 
(semantic-add-system-include "/usr/include/glib-2.0" 'c++-mode) 
(semantic-add-system-include "/usr/include/gtk-3.0" 'c-mode) 
(semantic-add-system-include "/usr/include/gtk-3.0" 'c++-mode) 

(semantic-add-system-include "/usr/local/include/" 'c-mode) 
(semantic-add-system-include "/usr/local/include/" 'c++-mode) 

(semantic-add-system-include "/usr/local/include/opencv" 'c-mode) 
(semantic-add-system-include "/usr/local/include/opencv2" 'c++-mode) 
(semantic-add-system-include "/usr/local/include/opencv" 'c-mode) 
(semantic-add-system-include "/usr/local/include/opencv2" 'c++-mode) 

(add-to-list 'semantic-lex-c-preprocessor-symbol-file 
     '"/usr/local/include/opencv2/core/types_c.h") 
(add-to-list 'semantic-lex-c-preprocessor-symbol-file 
     '"/usr/local/include/opencv2/imgproc/types_c.h") 

(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_PROP_RW" . "")) 
(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_EXPORTS" . "")) 
(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_EXPORTS_W_SIMPLE" . "")) 

(defun my-cedet-hook() 
    (local-set-key [(control return)] 'semantic-ia-complete-symbol) 
    (local-set-key "\C-c?" 'semantic-ia-complete-symbol-menu) 
    (local-set-key "\C-c>" 'semantic-complete-analyze-inline) 
    (local-set-key "\C-c=" 'semantic-decoration-include-visit) 
    (local-set-key "\C-cj" 'semantic-ia-fast-jump) 
    (local-set-key "\C-cq" 'semantic-ia-show-doc) 
    (local-set-key "\C-cs" 'semantic-ia-show-summary) 
    (local-set-key "\C-cp" 'semantic-analyze-proto-impl-toggle) 
    (local-set-key "\C-c+" 'semantic-tag-folding-show-block) 
    (local-set-key "\C-c-" 'semantic-tag-folding-fold-block) 
    (local-set-key "\C-c\C-c+" 'semantic-tag-folding-show-all) 
    (local-set-key "\C-c\C-c-" 'semantic-tag-folding-fold-all)) 
(add-hook 'c-mode-common-hook 'my-cedet-hook) 
(add-hook 'emacs-lisp-mode-hook 'my-cedet-hook) 
(add-hook 'lisp-interaction-mode-hook 'my-cedet-hook) 

(global-semantic-tag-folding-mode 1) 
+0

あなたがなどのヘッダーを含めるか、例を提供してもらえますか? –

答えて

4

私は今、作業構成を有しています。 cedet-develメーリングリストのAlex OttとDavid Engsterのおかげです。彼らの訂正に注意するために、私の構成には、「必要でなく、おそらく傷ついていない」行がいくつかありました。設定を更新した後、〜/ .semanticdbのすべてのファイルを削除してemacsを再起動すると、正常に動作しています!

構成をテストするためのサンプルcppファイルも含まれています。みんなありがとう!

(load-file "/home/terranpro/code/cedet/common/cedet.el") 

(require 'ede) 

(global-ede-mode t) 

;;(semantic-load-enable-minimum-features) 
(semantic-load-enable-code-helpers) 
;;(semantic-load-enable-gaudy-code-helpers) 
(semantic-load-enable-excessive-code-helpers) 
;;(semantic-load-enable-semantic-debugging-helpers) 

;; CEDET-devel mailing list said these werent needed 
;; and possibly hurtful 
;;(require 'semantic-ia) 

;;(require 'semantic-gcc) 

;;(require 'semantic-sb) 

;;(require 'semanticdb) 
;;(global-semanticdb-minor-mode 1) 

;;(require 'semanticdb-global) 

(semanticdb-enable-gnu-global-databases 'c-mode) 
(semanticdb-enable-gnu-global-databases 'c++-mode) 

(require 'semantic-c) 

(setq semantic-load-turn-useful-things-on t) 

(semantic-add-system-include "/usr/local/include/" 'c-mode) 
(semantic-add-system-include "/usr/local/include/" 'c++-mode) 

(add-to-list 'semantic-lex-c-preprocessor-symbol-file 
     '"/usr/local/include/opencv2/core/types_c.h") 
(add-to-list 'semantic-lex-c-preprocessor-symbol-file 
     '"/usr/local/include/opencv2/imgproc/types_c.h") 

(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_PROP_RW" . "")) 
(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_EXPORTS" . "")) 
(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_EXPORTS_W_SIMPLE" . "")) 
(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_EXPORTS_W" . "")) 
(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_EXPORTS_W_MAP" . "")) 
(add-to-list 'semantic-lex-c-preprocessor-symbol-map '("CV_INLINE" . "")) 

(defun my-cedet-hook() 
    (local-set-key [(control return)] 'semantic-ia-complete-symbol) 
    (local-set-key "\C-c?" 'semantic-ia-complete-symbol-menu) 
    (local-set-key "\C-c>" 'semantic-complete-analyze-inline) 
    (local-set-key "\C-c=" 'semantic-decoration-include-visit) 
    (local-set-key "\C-cj" 'semantic-ia-fast-jump) 
    (local-set-key "\C-cq" 'semantic-ia-show-doc) 
    (local-set-key "\C-cs" 'semantic-ia-show-summary) 
    (local-set-key "\C-cp" 'semantic-analyze-proto-impl-toggle) 
    (local-set-key "\C-c+" 'semantic-tag-folding-show-block) 
    (local-set-key "\C-c-" 'semantic-tag-folding-fold-block) 
    (local-set-key "\C-c\C-c+" 'semantic-tag-folding-show-all) 
    (local-set-key "\C-c\C-c-" 'semantic-tag-folding-fold-all)) 
(add-hook 'c-mode-common-hook 'my-cedet-hook) 
(add-hook 'emacs-lisp-mode-hook 'my-cedet-hook) 
(add-hook 'lisp-interaction-mode-hook 'my-cedet-hook) 

(global-semantic-tag-folding-mode 1) 

そして、CPPテストファイル:

#include <stdio.h> 
#include <vector> 
#include <string> 
#include <opencv2/opencv.hpp> 
#include <opencv2/core/core.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/features2d/features2d.hpp> 
#include <opencv2/highgui/highgui.hpp> 

using namespace cv; 
using namespace std; 

int main(int argc, char **argv) 
{ 
    KeyPoint k; 
    Mat m; 

    // m should have members like m.clone() 
    // k has members like k.pt (Point2f pt) 

    return 0; 
} 
3

セマンティックパーサがクラス宣言を解析できなかった、ように見えます - それはMat自体としてCV_EXPORTS Matないとして、それを見て、CV_EXPORTSは空の文字列に展開されなければならないが、 。私は以下の設定を使いましたが、Cコードではうまく動作しましたが、C++ではうまく動作しませんでした。私はあなたがcedet-develのためにメーリングリストを例に書くことを示唆している - ちょうどそこに書き込み、および必要であれば、私はあなたのメールのためのより多くのコメントを提供します...

(ede-cpp-root-project "OpenCV/C++ test" 
    :name "OpenCV/C++ test" 
    :file "/Users/ott/development/opencv-examples/cpp/CMakeLists.txt" 
    :include-path '("/" 
       ) 
    :system-include-path '("/opt/local/include" 
        "/opt/local/include/opencv" 
        "/opt/local/include/opencv2") 
    :spp-table '(
        ("CV_PROP_RW" . "") 
        ("CV_EXPORTS" . "") 
        ("CV_EXPORTS_W_SIMPLE" . "") 
       ("CV_EXPORTS_W" . "") 
       ("CV_EXPORTS_W_MAP" . "") 
       ("CV_INLINE" . "")) 
    :local-variables (list 
       (cons 'semantic-lex-c-preprocessor-symbol-file 
       (cons "/opt/local/include/opencv2/core/types_c.h" 
        (cons "/opt/local/include/opencv2/imgproc/types_c.h" 
        semantic-lex-c-preprocessor-symbol-file))))) 
+0

ありがとうアレックス!私はcedet-develリストに連絡し、熱心に援助を待っています。解決策がある場合、この質問を更新します。 – assem

関連する問題