2016-07-10 22 views
7

Tôi có một dự án qt chứa các phần trong C++14.Soạn thảo C++ 14 trong qtcreator

Gần đây, tôi đã thay đổi bản phân phối ubuntu của mình. Bây giờ tôi có 16.04 LTS và tôi đã cài đặt Qt creator 4.02 (được xây dựng vào ngày 13 tháng 6).

Để kích hoạt C++14 biên soạn, tôi đưa vào hồ sơ dự án:

QMAKE_CXXFLAGS += -std=c++14 

Tuy nhiên, khi xây dựng dự án, IDE tạo ra các lệnh sau:

g++ -c -pipe -std=c++14 -g -O0 -g -std=gnu++11 -Wall -W -D_REENTRANT ... 

Như đã thấy, được tạo ra makefile đặt cờ -std=gnu++11 ghi đè cờ cho C++14. Điều này đã không xảy ra với bản phân phối trước đó của tôi (LTS 12.04, cùng phiên bản người tạo qt).

Tôi đã thử với

CONFIG += -std=c++14 

Nhưng hành vi này là giống nhau.

Ai đó có thể đưa ra bất kỳ đầu mối nào không?

+2

Nếu tôi chạy vào điều này tôi sẽ đệ quy grep cho '" gnu ++ 11 "' trong tập tin cấu hình của tôi cho dự án này, và các tập tin cấu hình cho người tạo qt của bạn, và thất bại trong di chuyển bin của tôi. Không có điều đó, ổ cứng rộng.Nó có lẽ là một số thiết lập vô hại ở đâu đó ... – Yakk

+6

Thử 'CONFIG + = C++ 14' –

+1

@JonHarper Bạn nên đăng nó như là câu trả lời đúng! – Leon

Trả lời

7

Thay vì:

CONFIG += -std=c++14 

Sử dụng:

CONFIG += c++14 
+1

Nhưng xem thêm [câu trả lời này] (http://stackoverflow.com/a/42724650/1329652) cho MinGW gần đây trên Windows không được nhắm mục tiêu trực tiếp bởi Qt tối thiểu là 5.8.0. –

2

Bạn có thể sửa chữa nó triệt để. Bằng cách thay đổi tập tin cấu hình.

Trước hết, bạn cần đường dẫn thư viện, được sử dụng trong dự án của bạn. Đường dẫn bạn có thể xác định xem Dự án bảng điều khiển (Ctrl + 5) và nhớ tên của "Kit" trên các nút (Build|Run), sau đó theo dõi Tools -> Options -> Build & Run -> Kits, chọn "Kit" bạn nhớ trước đó, sau đó bạn có thể xem nội dung dòng Qt version:, sau đó trên tab Qt versions bạn có thể thấy đường dẫn thư viện đầy đủ tương ứng mà bạn cần. Trong trường hợp của tôi, tôi thấy /usr/local/Qt-5.4.1/.

Trong /usr/local/Qt-5.4.1/mkspecs/common/g++-base.conf tập tin (bạn có thể có một con đường cho Qt thư viện cài đặt), bạn có thể thay đổi hoặc QMAKE_CXXFLAGS_CXX11QMAKE_CXXFLAGS_CXX14 (nếu có) để biến bất cứ điều gì bạn muốn (ví dụ, để -std=gnu++1z).

Đối với clang đường dẫn trở thành /usr/local/Qt-5.4.1/mkspecs/common/clang.conf trong trường hợp của tôi.

Đối với một số mục tiêu khác/biên dịch bạn có thể nên làm theo Tools -> Options -> Build & Run -> Kits -> (select Kit you use) -> (look at 'Qt mkspec:' line at bottom) sau đó tìm trong /usr/local/Qt-5.4.1/mkspecs/*/qmake.conf (nơi *Qt mkspec: nội dung line) và trong tất cả bao gồm *.conf file một chuỗi QMAKE_CXXFLAGS_CXX11 hoặc QMAKE_CXXFLAGS_CXX14, mà bạn cần. Sau đó thay đổi giá trị của nó một cách thích hợp.

Sau đó, tất nhiên bạn cần sử dụng CONFIG += c++11 hoặc CONFIG += c++14, như Jon Harper được đề cập trong his answer.

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