2014-06-26 38 views
7

Tôi đang làm việc với một số tệp tiêu đề C++ sử dụng YouCompleteMe. Tệp tiêu đề không bao gồm tất cả các tệp tiêu đề khác mà nó cần để tìm tất cả các lớp mà nó đang sử dụng. Nếu không sửa đổi tệp tiêu đề, tôi có thể sửa đổi tệp .ycm_extra_conf.py của mình để có thông tin về các tệp tiêu đề bổ sung cần thiết không?YouCompleteMe, các tệp tiêu đề

Ví dụ: giả sử tôi có ba tệp "A.h", "B.h" và "C.cc".

C.cc

#include "A.h" 
#include "B.h" 

Ah

class A {}; 

Bh

class B : A {}; 

B bao gồm tập tin không thể biên dịch trên riêng của nó, nhưng C.cc sẽ biên dịch một cách chính xác bởi vì nó bao gồm mọi thứ theo đúng thứ tự. Tuy nhiên, nếu tôi mở B.h trên chính nó, nó sẽ phàn nàn về A không được định nghĩa.

Tôi biết rằng C.cc biên dịch chính xác, vậy làm thế nào để tôi nói YCM khi mở B.h để biên dịch nó trong cùng một ngữ cảnh sẽ sử dụng cho C.cc? Cờ dường như không đủ để cho YCM biết cách biên dịch tệp, vì nó cần được biên dịch bằng C.cc.

+1

không câu cuối cùng của bạn có ý nghĩa gì? – sehe

+0

Xin chào, tôi đã cập nhật nhận xét để giải thích rõ hơn vấn đề. Cảm ơn! – archgoon

Trả lời

4

Trong bạn .ycm_extra_conf.py thêm cờ tiền xử lý thường xuyên của bạn, ví dụ .:

flags = [ 
'-Wall', 
'-Wextra', 
'-Wno-variadic-macros', 
'-fexceptions', 
'-DNDEBUG', 
'-DUNIT_TESTS', 
'-std=c++11', 
'-x', 'c++', 
'-isystem', '/home/sehe/custom/boost', 
'-isystem', '/usr/lib/gcc/x86_64-linux-gnu/4.8/include', 
'-I', 'src', 
'-I', 'include', 
'-isystem', '/usr/include', 
'-isystem', '/usr/local/include', 
] 
Các vấn đề liên quan