2008-12-04 9 views

Trả lời

16

Đặt đường dẫn tìm kiếm thư mục trong cài đặt Visual Studio để khắc phục sự cố bao gồm thường không thực sự là ý tưởng hay từ quan điểm thiết kế. Mã của bạn sẽ ít di chuyển đến các máy khác nhau với các thư mục khác nhau.

Đề nghị của tôi sẽ được giải quyết vào một tổ chức của mã của bạn để các đường dẫn tương đối của thư mục con (liên quan đến bao gồm cả mã của bạn) được cố định:

  • Thêm "thư mục cơ sở" để dự án (thuộc tính dự án -> Thuộc tính cấu hình -> C/C++ -> Thư mục bao gồm bổ sung ", bao gồm thư mục bổ sung")
  • Thêm thư mục con vào #include statements, tức là #include "subdirectory/somefile.h".

Điều này có thêm tiền thưởng khi có thể xem thư mục nào trong Giải pháp của bạn chứa tệp - thường là thông tin hữu ích khi bạn đang cố gắng tìm đường hoặc cố gắng tìm ra tệp .

1

Tôi tin rằng việc sử dụng tìm kiếm đệ quy để bao gồm các tệp sẽ gây ra nhiều vấn đề hơn là giải quyết dưới dạng tệp sai hoặc các phiên bản sai được đưa vào. Sau khi tất cả, bạn phải xác định các thư mục bên phải một lần khi bạn thiết lập dự án.

+6

Sai. Tìm kiếm đệ quy là mặc định giữa các môi trường phát triển Macintosh cổ điển như CodeWarrior. Họ đã có một quy ước đơn giản rằng việc sử dụng các parens xung quanh một thư mục (bỏ qua) nó được tự động đưa vào, do đó bạn phải thêm một đường dẫn cụ thể. Điều này giữ danh sách bao gồm rất đơn giản và tôi đã luôn luôn bỏ lỡ nó trên Windows. –

6

Chúng tôi chưa tìm thấy cách thiết lập tìm kiếm thư mục đệ quy trong Visual Studio (mặc dù Xcode không có cài đặt vấn đề và sử dụng chúng). danh sách những gì chúng tôi làm là tất cả các thư mục trong một tập tin, và chỉ định tập tin trong tùy chọn bổ sung C/C++ Command Line:

@ "IncludeFolders.rsp"

Chúng tôi hiếm khi tìm thấy vấn đề sử dụng tìm kiếm đệ quy, mặc dù một sự kết hợp ngẫu nhiên của ``/'' làm những điều chậm lại một chút.

1

Tôi đã tìm thấy rằng tôi có thể rút ngắn độ dài đường dẫn trong hầu hết các trường hợp, kể cả trong MSVC, bằng một mẹo nhỏ bằng tay bằng lệnh SUBST. Tôi sẽ hiển thị và ví dụ để rút ngắn C++ kế thừa mặc định bao gồm các đường dẫn, nhưng bạn sẽ làm điều này cho dự án của bạn có liên quan bao gồm các đường dẫn. Đầu tiên tạo ra một hoặc nhiều file thực thi như thế này (và chạy chúng từ Windows Explorer hoặc dòng lệnh):

MDrive.bat: 
subst M: /D 
subst M: "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC" 

WDrive.bat: 
subst W: /D 
subst W: "C:\Program Files (x86)\Windows Kits\8.1\Include" 

... This is just and example. You would do this for your 
    project related include directories. 

Bạn có thể tạo ra một số những cho con đường dài hơn. Trong trường hợp trên, tôi chỉ rút ngắn các đường dẫn thừa kế chuẩn mà MSVC sử dụng theo mặc định. BTW, lệnh Subst hoạt động với quyền quản trị, nhưng không bước vào một ký tự ổ đĩa vật lý hoặc ánh xạ hiện có (tôi không chắc chắn điều gì sẽ xảy ra - tôi không muốn kiểm tra nó vào lúc này).

Bước này là tùy chọn. Tôi trong MSVS 2010+ tôi thêm một bảng thuộc tính tùy chỉnh. BTW, nếu bạn không biết về các thuộc tính tùy chỉnh, bạn nên. Xem Property Pages (Visual C++). VIEW-Cửa sổ thuộc tính Windows khác, nhấp chuột phải vào dự án trong Trình quản lý sản phẩm, Thêm Bảng thuộc tính dự án mới. Dưới Macro người dùng, thêm Macro, ví dụ:MyProjectIncludePaths và thiết lập giá trị (trong ví dụ này) để

M:; M:\atlmfc\include; W:\um; W:\shared; W:\winrt 

thảo mà chỉ 49 ký tự trong ví dụ này, đó là ngắn hơn nhiều so với mặc định của

$(VC_IncludePath); $(WindowsSKD_IncludePath) 

mà khi mở rộng vĩ mô dịch để

C:\Program Files (x86)\Windows Kits\8.1\Include;C:\Program Files (x86)\Windows Kits\8.1\Include\atlmfc\include;C:\Program Files (x86)\Windows Kits\8.1\Include\um;C:\Program Files (x86)\Windows Kits\8.1\Include\shared;C:\Program Files (x86)\Windows Kits\8.1\Include\winrt 

Theo số của tôi, mặc định là 270 ký tự - tức là dài hơn 260 ký tự - bất cứ ai có thể giải thích điều này?

Trong trang thuộc tính của dự án (tức là không phải là tùy chỉnh tờ tài sản), trong ví dụ của tôi, tôi đã đi đến Configuration Properties-VC++ Thư mục và thay đổi Bao gồm Thư mục giá trị cho $ (MyProjectIncludePaths) , nhưng trong thực tế, bạn sẽ đi đến (trong trang trang tính tùy chỉnh của bạn nếu bạn đã tạo) C/C++ - Chung và thêm $ (MyProjectIncludePaths) vào Thư mục bao gồm bổ sung.

Ngoài các đường dẫn 270 ký tự kế thừa, tôi có thể thêm một số đường dẫn dài hợp lý dưới Thư mục bao gồm bổ sung. Có thể Thư mục Bổ sung Bao gồm có giới hạn độ dài riêng (?).