2015-01-09 20 views
5

Làm cách nào để bật hỗ trợ C++ 14 trong QtCreator 3.3 bằng cách sử dụng Clang 3.5? Tôi đã thêm một bộ Clang và tôi đã thêm CONFIG += c++14 vào tệp dự án của mình. Tuy nhiên, khi sử dụng ví dụ: return type deduction tôi nhận được lỗi sau:Hỗ trợ C++ 14 trong QtCreator với Clang

error: 'auto' return without trailing return type; deduced return types are a C++1y extension

+0

http : //stackoverflow.com/q/27857253/862973 – ldgorman

+0

bạn đã sao chép câu hỏi của riêng mình chưa? – ldgorman

+0

Thông báo lỗi sẽ cho bạn gợi ý với phần "C++ 1 *** y ***". Hãy thử sử dụng ví dụ: Thay vào đó, 'C++ 1y'. Có thể bạn cần phải thêm ví dụ '-std = C++ 14' (hoặc' -std = C++ 1y') ở đâu đó (tôi không quen với QtCreator và tệp cấu hình của nó). –

Trả lời

3

tôi phải đi đến Makefile trong việc xây dựng thư mục và tự thay thế -std=c++11 với -std=c++14.

Rất may Makefile chỉ được viết một lần khi bạn thêm bộ công cụ vào dự án. Tôi chỉ phải làm điều này một lần và có thể xây dựng trong QtCreator thường xuyên như tôi muốn.

Vì vậy, bây giờ tôi có thể sử dụng một bộ Clang để sử dụng tất cả các tính năng C++ 14 mới. Là một phần thưởng, tôi cũng có thể sử dụng tất cả các tính năng C++ 17 nếu tôi đặt thủ công -std=c++1z trong Makefile. Ngọt!

+2

Bạn có thể làm 'QMAKE_CXXFLAGS + = -std = C++ 1z' ​​trong tệp' .pro' thay vì – Drop

+0

@Drop: Tôi đã thử điều đó trước đây. Nó không hoạt động bởi vì bằng cách nào đó nó thêm '-std = C++ 1z' ​​** và **' -std = C++ 11' vào Makefile. – gartenriese

+0

Bạn có quên xóa 'CONFIG + = C++ 14' không? – nib

6

bạn có thể sử dụng CONFIG += c++14 trong .pro tập tin với Qt5.5

nhưng có một lỗi với kêu vang, vì vậy chúng tôi cần phải sửa đổi các tập tin Qt/5.5/clang_64/mkspecs/features/c++14.prf, thêm mã này trước include(c++11.prf):

contains(QMAKE_LFLAGS_CXX11, -stdlib=libc++) { 
    QMAKE_CXXFLAGS_CXX11 += -stdlib=libc++ 
} 
+0

Tệp 'C++ 14.prf' của tôi có các bảo vệ có nghĩa là dừng' -std = C++ 1y' được chỉ định nếu Clang sớm hơn 3.2. hoặc phiên bản 4 trên Apple. Tôi nhận xét những người bảo vệ - chạm vào gỗ, nó hoạt động! –

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