2011-12-23 30 views
8

Tôi đang làm việc trên một dự án và tôi tiếp tục nhận được stumped về cách tôi có nghĩa vụ phải nhập khẩu các tập tin từ một thư mục khác nhau. Dưới đây là một số tác phẩm của tôi được tổ chức như thế nào:bao gồm các tệp tiêu đề từ các thư mục khác nhau?

-stdafx.h 
-core/ 
-->renderer.cpp 
-shapes/ 
-->sphere.h 
-->sphere.cpp 

làm thế nào tôi có thể truy cập vào stdafx.hshapes/sphere.h từ core/renderer.cpp?

+0

bạn đang sử dụng trình biên dịch nào? –

+0

Microsoft Visual Studio 2010 –

+0

Hãy cảnh giác với các đề xuất sau để sử dụng ký hiệu '../'. Xem [Lợi ích của đường dẫn tương đối cho tiêu đề] (http://stackoverflow.com/questions/597318/) là gì. –

Trả lời

7

Có nhiều cách. Ví dụ: bạn có thể #include "../stdafx.h". Phổ biến hơn là thêm gốc của dự án của bạn vào đường dẫn bao gồm và sử dụng #include "shapes/sphere.h". Hoặc có một thư mục riêng biệt với các tiêu đề trong đường dẫn bao gồm.

+0

làm thế nào tôi có thể thêm một gốc vào nó? –

+0

Đó là một nơi nào đó trong cài đặt.Như Dave chỉ ra, đó là tùy chọn '/ I', nhưng những gì bạn đang tìm kiếm có lẽ là một cái gì đó trong cài đặt dự án hoặc bất cứ điều gì nó được gọi là, đã không nhìn thấy Visual Studio trong một thời gian. –

1

Bạn có thể sử dụng đường dẫn tương đối:

#include "../stdafx.h" 
#include "../shapes/sphere.h" 

hoặc thêm thư mục dự án của bạn để biên dịch của bạn bao gồm đường dẫn và tham khảo chúng như bình thường:

#include "stdafx.h" 
#include "shapes/sphere.h" 

Bạn có thể sử dụng /Icommand line option thêm đường dẫn hoặc đặt đường dẫn trong cài đặt dự án của bạn.

+0

làm cách nào để thêm thư mục dự án? Xin lỗi tôi mới đến C++ –

+0

Tôi không có Visual Studio nữa (tôi đã không sử dụng nó trong khoảng một năm hoặc lâu hơn). Tuy nhiên, ** [trang này] (http://www.steptools.com/support/stdev_docs/help/settings_vc10.html) ** có ảnh chụp màn hình cho biết chính xác nơi đường dẫn sẽ được thêm vào trong cài đặt dự án. –

0

Một (xấu) cách để làm điều này là bao gồm đường dẫn tương đối vào tệp tiêu đề bạn muốn bao gồm như một phần của dòng #include. Ví dụ:

bao gồm "tiêu đề/myHeader.h"

bao gồm "../moreHeaders/myOtherHeader.h"

Nhược điểm của phương pháp này là nó đòi hỏi bạn phải phản ánh cấu trúc thư mục của bạn trong ma cua ban. Nếu bạn cập nhật cấu trúc thư mục của mình, mã của bạn sẽ không hoạt động nữa.

Phương pháp tốt hơn là cho trình biên dịch hoặc IDE biết rằng bạn có một loạt tệp tiêu đề ở một số vị trí khác, để nó sẽ tìm ở đó khi không tìm thấy chúng trong thư mục hiện tại. Điều này thường có thể được thực hiện bằng cách thiết lập một "đường dẫn bao gồm" hoặc "thư mục tìm kiếm" trong các thiết lập dự án IDE của bạn.

Trong Visual Studio, bạn có thể nhấp chuột phải vào dự án của bạn trong Solution Explorer và chọn "Properties", sau đó là tab "VC++ Directories". Từ đây, bạn sẽ thấy một dòng có tên “Bao gồm thư mục”. Thêm thư mục bao gồm của bạn ở đó.

Trong mã :: Chặn, chuyển đến menu Dự án và chọn "Tùy chọn xây dựng", sau đó chọn tab "Tìm kiếm thư mục". Thêm thư mục bao gồm của bạn ở đó.

Sử dụng g ++, bạn có thể sử dụng tùy chọn -Tôi để chỉ định thư mục bao gồm thay thế.

g ++ -o chính -I/nguồn/bao gồm main.cpp

Những điều tốt đẹp về cách tiếp cận này là nếu bạn đã bao giờ thay đổi cấu trúc thư mục của bạn, bạn chỉ cần thay đổi một trình biên dịch đơn lẻ hoặc cài đặt IDE thay vì mọi tệp mã.

Các vấn đề liên quan