Làm cách nào để thay đổi phiên bản Qt nào được sử dụng cho qmake?


31

Tôi cảm thấy nên có một cách đơn giản để làm điều này, nhưng googlefu của tôi không thành công nên tôi thực sự đánh giá cao một số thông tin về cách chuyển đổi (hoặc thậm chí thay đổi vĩnh viễn) phiên bản Qt nào được sử dụng khi thực hiện qmake. Nếu tôi hỏi phiên bản nào tôi nhận được như sau:

~ $ qmake --version
QMake version 3.0
Using Qt version 5.0.1 in /usr/lib/x86_64-linux-gnu

Tôi đã cài đặt QtCreator, nhưng tôi không biết phải đi đâu từ đây.

Câu trả lời:


16

Điều này không nhất thiết phải là Unix / Linux, vì vậy có lẽ bạn nên hỏi điều này trên Stack Overflow. Chưa bao giờ, QtCreator thường khá giỏi trong việc phát hiện các cài đặt Qt thay thế, chỉ cần tạo một dự án mới và nhìn vào Projectstab bên trái. Bạn có thể thiết lập các cấu hình xây dựng khác nhau ở đó. Cần có một hộp thả xuống để chọn từ các phiên bản được cài đặt khác nhau cho mỗi cấu hình.

Mặt khác, dường như QTDIRbiến môi trường được sử dụng để đặt phiên bản Qt. Theo mặc định, QtCreator đặt điều này /usr/share/qt4cho tôi, do đó, đặt nó thành đường dẫn tương đương (tức là nơi chứa các tệp cấu hình) sẽ tạo ra bản dựng qmake với một phiên bản khác. Bạn có thể kiểm tra với một cái gì đó như:

QTDIR=/usr/share/qtX qmake --version

Cũng có thể thiết lập điều này trong .protệp, nhưng nếu vậy thì nó không có giấy tờ (như với khá nhiều qmakebiến).

Ngoài ra, nếu bạn muốn xây dựng với một phiên bản chính cụ thể, qmakethường chỉ được liên kết với một tệp nhị phân cho phiên bản chính mặc định. Các nhị phân thực là qmake-qt4, qmake-qt5v.v. Cũng xem man qtchooservà các qtX-defaultgói trên các hệ thống dựa trên Debian.

Cập nhật

Có một lỗi với qtchooserUbuntu 13.04 và 13.10 dường như ảnh hưởng đến cách các ứng dụng Qt phát hiện các phiên bản Qt khác nhau, xem https://bugs.launchpad.net/ubfox/+source/qt4-x11/+bug/1177823 . Điều này cũng có thể ảnh hưởng đến QtCreator.


Cảm ơn! Tôi cần sử dụng qmake-qt4 thay vì qmake hói - rất dễ, nhưng tôi không thể tìm thấy thông tin tôi cần. Cảm ơn!
Tamsyn Michael

@TamsynMichael - Vâng, về phía linux qmake in bin chỉ là một liên kết tượng trưng. Vì vậy, nếu bạn đã sử dụng một cái gì đó như cập nhật thay thế để chuyển đổi qua lại, đó có thể là lý tưởng. Nó không có trong các lựa chọn thay thế cập nhật và những thứ như tập lệnh xây dựng PyQt muốn tham chiếu trực tiếp đến nhị phân - không phải là một liên kết tượng trưng.
RobotHumans

13

Nó giúp tôi sử dụng -qt=qt5chuyển đổi hoặc QT_SELECT=qt5biến môi trường.

$ qmake --version
QMake version 2.01a
Using Qt version 4.8.7 in /usr/lib/x86_64-linux-gnu

$ qmake -qt=qt5 --version
QMake version 3.0
Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu

$ QT_SELECT=qt5 qmake --version
QMake version 3.0
Using Qt version 5.5.1 in /usr/lib/x86_64-linux-gnu

Còn các phiên bản nhỏ & vá thì sao? Ví dụ, làm thế nào chúng ta có thể chọn 5.9.4 hoặc 5.11 trên 5.12 một cách rõ ràng?
DavidJ

4

Có một phương pháp tốt hơn .

Nếu bạn muốn thay đổi vĩnh viễn, bạn cần sửa đổi /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conftệp, đây là một liên kết tượng trưng ../../../../share/qtchooser/qt4-x86_64-linux-gnu.conf.

Đây là một ví dụ cho hệ thống của tôi (Ubuntu 17.10 x64, Qt 5.10.1). Tôi sẽ đề nghị giữ cả tệp symlink gốc và mục tiêu của nó (trong trường hợp bạn muốn khôi phục cấu hình ban đầu). Và cũng tạo các tệp mới trong các vị trí mặc định (để thống nhất). Vì vậy, đây là các bước:

Đổi tên tệp symlink:

sudo mv /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf_orig

Tạo một tệp cấu hình đích mới (với bất kỳ tên nào):

gksudo gedit /usr/share/qtchooser/my_Qt_5.10.1_Desktop_gcc_x64.conf

Tệp này phải chứa hai dòng: dòng đầu tiên là đường dẫn đến nhị phân Qt (bao gồm qmake) và dòng thứ hai là đường dẫn đến thư viện Qt (bao gồm các tệp .so). Trong trường hợp của tôi, nó là

<Qt_dir>/5.10.1/gcc_64/bin
<Qt_dir>/5.10.1/gcc_64/lib

Lưu nó và đóng nó. Tạo một liên kết tượng trưng default.confđến tệp cấu hình mới:

ln -s /usr/share/qtchooser/my_Qt_5.10.1_Destop_gcc_x64.conf /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

Kiểm tra phiên bản Qt của bạn:

qmake --version

Bây giờ nó phải luôn luôn sử dụng phiên bản được chỉ định.


2

Trong một số bản phân phối như Debian Jessie Stable, bạn có thể thực hiện như sau:

sudo apt-get install -y qt4-qmake qt4-dev-tools
sudo update-alternatives --install "/usr/bin/qmake" "qmake" "/usr/bin/qmake-qt4" 40
sudo update-alternatives --config qmake

Và chỉ cần chọn phiên bản bạn cần nếu bạn cần thay đổi một lần nữa, chỉ cần chạy lại dòng thứ ba.


2

Nhiều câu trả lời ở trên sẽ hoạt động. Tuy nhiên cá nhân tôi thấy rằng không ai trong số họ là cố chấp. Ví dụ: tôi có thể chạy lệnh này:

$ QT_SELECT=qt5 qmake --version
QMake version 3.0
Using Qt version 5.2.1 in /usr/lib/x86_64-linux-gnu

Nhưng nếu tôi mở một thiết bị đầu cuối mới và kiểm tra phiên bản Qt thì nó sẽ trở về mặc định và nếu bạn có nhiều phiên bản Qt được cài đặt thì mặc định có thể không phải là phiên bản bạn muốn. Bạn có thể biết bằng cách chạy lệnh này:

$ qtchooser -print-env
QT_SELECT="default"
QTTOOLDIR=...
QTLIBDIR=...

Cách duy nhất để thực hiện thay đổi của bạn là thay đổi phiên bản mặc định. Để làm điều này, chỉnh sửa /usr/lib/x86_64-linux-gnu/qtchooser/default.confvà thay đổi dòng này:

/usr/lib/x86_64-linux-gnu/qt5/bin

Nơi bạn thay đổi qt5thành bất kỳ phiên bản nào bạn muốn. Bạn có thể sử dụng lệnh qtchooser -list-versionsđể xem phiên bản nào được cài đặt trên máy của bạn.


2

qmake( /usr/bin/qmake) thực sự chỉ là một liên kết tượng trưng đến qtchooser( /usr/bin/qtchooser).

Đây là một trích dẫn từ man qtchooser:

FILES
       /etc/xdg/qtchooser/default.conf
              System-wide  configuration  files. Each has two lines, the first
              is the path to the binaries and the second is the path to the Qt
              libraries.  If  a default.conf is provided, the settings from it
              will be automatically used in case nothing else is selected.

       $HOME/.config/qtchooser/*.conf
              User configuration files.

Các tập tin /etc/xdg/qtchooser/default.confcó ưu tiên cao hơn /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf. Dưới đây là các bước về cách chọn phiên bản Qt mặc định cho qmakeví dụ về hệ thống của tôi (Ubuntu 17.10 x64, Qt 5.10.1).

Tạo /etc/xdg/qtchooserthư mục:

sudo mkdir /etc/xdg/qtchooser

Tạo và chỉnh sửa tập tin cấu hình:

gksudo gedit /etc/xdg/qtchooser/default.conf

Như đã nói ở trên. tệp này phải chứa hai dòng: dòng đầu tiên là đường dẫn đến nhị phân Qt (bao gồm cả qmake) và dòng thứ hai là đường dẫn đến thư viện Qt (bao gồm các tệp .so). Trong trường hợp của tôi, nó sẽ là:

<Qt_dir>/5.10.1/gcc_64/bin
<Qt_dir>/5.10.1/gcc_64/lib

Lưu nó và đóng lại. Bây giờ qmakenên sử dụng phiên bản Qt được chỉ định.


Một liên kết tượng trưng cũng làm việc: sudo mkdir -p / etc / xdg / qtchooser && sudo ln -s /usr/share/qtchooser/qt5-x86_64-linux-gnu.conf /etc/xdg/qtchooser/default.conf
maharvey67

1
sudo apt-get install qt5-default

Nếu bạn thích qt5, để qt4sử dụng:

sudo apt-get install qt4-default

+1, tuyệt vời và đơn giản, quá tệ câu trả lời này quá thấp trên trang
jpa

0

Trong thiết lập mặc định (của tôi) trên Fedora 23 có cả hai qt-3.3.8qt-4.8.5môi trường, cũng cần phải thêm /usr/libxx/qt4/bin/thư mục tạm thời vào PATHđể cho phép cmake/ qmakegói tìm phiên bản phù hợp. Điều này là cần thiết khi xây dựng mã, không phải khi chạy ứng dụng QT4 đã hoàn thành.

Vì một số lý do, đường dẫn QT3 đã được cài đặt ở đó vĩnh viễn và không may khi bắt đầu PATH, điều này đã ngăn bộ chọn phiên bản QT hoạt động đúng.

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.