2010-08-02 30 views
51

Có thể chỉ định các tệp tiêu đề bổ sung để bao gồm từ dòng lệnh (sử dụng GCC 4/C++) không?Bao gồm các tệp tiêu đề bằng tùy chọn dòng lệnh?

Hoặc có bất kỳ tệp cách nào khác có thể được bao gồm ngoại trừ #include không?

Bối cảnh: Tôi đang cố gắng biên dịch một cơ sở mã lớn trên máy tính của riêng mình. Mã này thường được biên dịch trong một cụm, với một hệ thống xây dựng phức tạp (SoftRelTools ai?), Được đan xen với hệ điều hành, hầu như không thể cài đặt nó ở một nơi khác (nghĩa là hàng trăm makefiles và shell script, và khó đường dẫn được mã hóa cho các ổ đĩa mạng). Tuy nhiên, mã thực tế là khá đơn giản, và biên dịch tốt, NHƯNG nó là thiếu rất nhiều bao gồm (chủ yếu là một la "include <vector>" và "include <math.h>"). Tôi đoán các hệ thống xây dựng sẽ chăm sóc này thường, nhưng tôi phải đi qua mã và thêm bao gồm bằng tay, mà tôi muốn tránh.

Trả lời

60

I found tùy chọn -bao gồm. Bạn có muốn điều này không?

tập tin -gồm

Process tập tin như thể "#include 'tập tin'" xuất hiện như dòng đầu tiên của các tập tin nguồn chính. Tuy nhiên, thư mục đầu tiên được tìm kiếm cho tập tin là thư mục làm việc của bộ tiền xử lý thay vì thư mục chứa tệp nguồn chính. Nếu không tìm thấy tại đó, nó sẽ được tìm kiếm trong số phần còn lại của chuỗi "#include" ... "" chuỗi tìm kiếm như bình thường.

Nếu có nhiều tùy chọn bao gồm, các tệp được bao gồm trong thứ tự chúng xuất hiện trên dòng lệnh.

+3

Tính năng bao gồm -include chủ yếu nhằm hỗ trợ các tiêu đề được biên dịch trước. Bằng cách này bạn có thể tiêm tệp .pch của bạn vào tất cả các tệp nguồn mà không phải chỉnh sửa từng tệp. – gavinb

+2

Cảm ơn! Mặc dù tôi đã làm RTFM (M = manpage), tôi đã bỏ lỡ điều đó. Tôi cũng nghĩ PCH chỉ là một tính năng Visual C++ ... nhưng có vẻ như đây là những gì họ đang sử dụng trong hệ thống ... – jdm

7

Theo tài liệu gcc, công tắc dòng lệnh "-include file" sẽ thực hiện công việc.

21

Từ hướng dẫn gcc:

tập tin -gồm

Process tập tin như thể "#include "file"" xuất hiện như những dòng đầu tiên của tập tin nguồn chính. Tuy nhiên, thư mục đầu tiên tìm kiếm tệp là thư mục làm việc của bộ xử lý trước thay vì thư mục chứa tệp nguồn chính. Nếu không tìm thấy ở đó, nó sẽ được tìm kiếm trong phần còn lại của chuỗi tìm kiếm "#include "..."" như bình thường.

Nếu có nhiều tùy chọn bao gồm, các tệp được bao gồm theo thứ tự chúng xuất hiện trên dòng lệnh.

+2

Để mất vinh quang, nó đủ trễ chỉ trong vài giây ... –

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