Sự khác biệt giữa CPPFLAGS và CXXFLAGS trong GNU Make


139

Sự khác biệt giữa CPPFLAGS và CXXFLAGS trong GNU Make là gì?


2
Bạn có thể thực hiện để in ra các biến và cơ sở dữ liệu quy tắc được xác định trước bằng cách sử dụng lệnh gọimake -p
Daniele Pallastrelli

Câu trả lời:


210

CPPFLAGSđược cho là cờ cho người cai trị C P re P ; CXXFLAGSlà cờ cho trình biên dịch C ++.

Các quy tắc mặc định trong make (trên máy của tôi, ở mọi mức độ) chuyển CPPFLAGSsang mọi thứ, CFLAGSchỉ được thông qua khi biên dịch và liên kết C, và CXXFLAGSchỉ được thông qua khi biên dịch và liên kết C ++.


1
Có vẻ như một thông lệ phổ biến rằng CFLAGS cũng sẽ được thông qua khi biên dịch C ++?
Baiyan Huang

21
Hà. Tôi hiểu rồi! cái xnày được +bật lên vì C++FLAGSnó sẽ làm nổ tung trình biên dịch. ... Tôi có thể đến bữa tiệc muộn, nhưng vẫn tốt hơn là đến đúng giờ.
Jacksonkr

@BaiyanHuang Tôi sẽ không nghĩ nó là phổ biến hay không; bạn sẽ chạy theo cả hai quy ước. Bạn phải biết thiết lập hiện tại của bạn đang làm gì.
James Moore

1
CPPFLAGSKHÔNG cho C P lus P lus nhưng CXXFLAGS là.
shizhen

Đúng nhưng khủng khiếp. Cảm giác như chúng ta bị mắc kẹt trong những năm 80.
shuhalo

34

Theo mặc định, CPPFLAGSsẽ được trao cho bộ tiền xử lý C, trong khi CXXFLAGSsẽ được trao cho trình biên dịch C ++.

Các GNU Make tay là một nguồn lực tốt cho các câu hỏi như thế này (xem biến Implicit ).


27
Tôi đã nhìn chằm chằm vào hướng dẫn khi tôi có câu hỏi chính xác như vậy. Tôi đã gõ CPPFLAGS vào stackoverflow và nhận được câu trả lời nhanh hơn nhiều so với tìm kiếm hướng dẫn.
Dan Hook

18

CPPFLAGS dành cho bộ tiền xử lý C, trong khi CXXFLAGS dành cho trình biên dịch C ++.

Xem ở đây .


0

Theo mặc định, chúng được đặt thành một cái gì đó.

Trong thực tế, bạn cần phải biết những gì mỗi dự án làm. Hầu như không ai sử dụng các giá trị mặc định được tạo sẵn đó và ví dụ, nếu bạn dựa vào CPPFLAGS có nghĩa là "cờ cho bộ tiền xử lý C", bạn sẽ thấy rằng dự án mà bạn quan tâm đã sử dụng nó có nghĩa là "cờ cho trình biên dịch C ++" thay thế. Và cờ CFLAGS có được chuyển sang các dòng biên dịch C ++ không? Đôi khi. Không phải lúc nào. Vv, v.v.


1
Một số dự án sử dụng CPPFLAGS có nghĩa là "cờ c ++", nhưng những dự án đó gần như chắc chắn làm như vậy vì không biết gì về tiêu chuẩn, và sẽ tốt hơn nếu họ sử dụng CXXFLAGS.
Điểm_Under

@Score_Under Tôi không đồng ý với bạn, nhưng thế giới đầy những dự án không quan tâm đến những gì mọi người nghĩ là tiêu chuẩn. Bạn luôn phải điều tra.
James Moore
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.