Bạn chắc chắn không phải sử dụng QtCreator để viết chương trình Qt.
Bạn cũng không phải sử dụng qmake
nhưng bạn đang gặp sự cố khi không sử dụng.
Để làm bất cứ điều gì thậm chí từ xa thú vị trong Qt, bạn chắc chắn sẽ kết thúc phân lớp QObject
. Tất cả các lớp con này yêu cầu macro Q_OBJECT
trong định nghĩa của chúng cho phép cú pháp tín hiệu/khe. Cú pháp này không phải là C++ thông thường và không thể được biên dịch bằng cách sử dụng g ++. Tệp có chứa định nghĩa lớp học với Q_OBJECT
phải được chạy qua số meta-object compiler của Qt được gọi là moc
. Điều này có nghĩa là bạn phải tìm ra các tệp cần phải có moc
áp dụng cho chúng, sau đó chạy moc
trên chúng, rồi biên dịch tệp cpp kết quả bằng g++
. Đây là lý do Qt cung cấp qmake
. Nó tạo ra các quy tắc chính xác trong Makefile cho bạn.
Tệp dự án Qt .pro thực sự khá đơn giản để làm việc và tôi thực sự khuyên bạn nên sử dụng chúng. Hãy nhớ rằng, qmake
là công cụ dòng lệnh giống như g++
. Ngoài ra, nó thực sự có thể tạo ra một tập tin dự án khung cho bạn bằng cách cung cấp các tùy chọn để -project
để bắt đầu bạn chỉ có thể làm
qmake -project
qmake
make
và bạn đã làm xong.Trên thực tế tôi thấy rằng hồ sơ dự án tạo ra có thể bị thiếu việc kê khai của bất kỳ thư viện Qt thêm tôi có thể sử dụng, do đó bạn có thể phải thêm một dòng như
QT += opengl
nếu, ví dụ, bạn đã bao gồm cái gì đó như QGLWidget
.
Tôi có thể hiểu không muốn sử dụng Trình tạo Qt, nhưng tại sao không sử dụng qmake? Tất cả qmake làm là tạo ra một Makefile cho bạn; nếu bạn không sử dụng qmake, bạn sẽ phải tự viết cùng một Makefile, và tệ hơn là bạn sẽ phải duy trì một Makefile khác nhau cho mỗi nền tảng mà bạn muốn biên dịch theo. Với qmake bạn chỉ phải tạo một file .pro, thay vì phải nhớ cách một MakeVile của MSVC khác với Makefile gnu, v.v. –
Vì tôi muốn biết điều gì xảy ra trong quá trình biên dịch thay vì sử dụng một công cụ tự động. Nó dễ dàng hơn với qmake hoặc Qt Creator, nhưng tôi thích thực hiện tác vụ này một cách thủ công. – Squall
Vì vậy, bạn muốn viết makefiles của bạn bằng tay, thay vì sử dụng một máy phát điện như qmake, cmake hoặc autotools? Lý do duy nhất cho điều đó là nếu bạn muốn tìm hiểu cú pháp Makefile. Kết quả sẽ là một gánh nặng bảo trì, không phải di động, vv –