Bagaimana cara mengubah versi Qt yang digunakan untuk qmake?

31

Saya merasa harus ada cara sederhana untuk melakukan ini, tetapi googlefu saya gagal, jadi saya akan sangat menghargai beberapa info tentang cara beralih (atau bahkan mengubah secara permanen) versi Qt mana yang digunakan saat melakukan qmake. Jika saya bertanya versi mana yang saya dapatkan sebagai berikut:

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

Saya sudah menginstal QtCreator, tapi saya tidak yakin harus ke mana dari sini.

Tamsyn Michael
sumber

Jawaban:

16

Ini belum tentu spesifik Unix / Linux, jadi Anda mungkin lebih baik menanyakan ini di Stack Overflow. Namun demikian, QtCreator biasanya cukup baik dalam mendeteksi instalasi Qt alternatif, cukup buat proyek baru dan lihat di bawah Projectstab di sebelah kiri. Anda dapat mengatur konfigurasi bangunan yang berbeda di sana. Harus ada kotak drop down untuk memilih dari berbagai versi yang diinstal untuk setiap konfigurasi.

Kalau tidak, tampaknya QTDIRvariabel lingkungan digunakan untuk mengatur versi Qt. Secara default QtCreator menetapkan ini /usr/share/qt4untuk saya, jadi menyetelnya ke jalur yang setara (yaitu yang ada di mana file konfigurasi) harus membuat qmake build dengan versi yang berbeda. Anda dapat menguji dengan sesuatu seperti:

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

Dimungkinkan juga untuk mengatur ini dalam .profile, tetapi jika demikian itu tidak berdokumen (seperti dengan cukup banyak qmakevariabel).

Juga, jika Anda ingin membangun dengan versi utama tertentu, qmakebiasanya hanya disinkronkan ke biner untuk versi utama default. Binari sebenarnya qmake-qt4, qmake-qt5dll. Juga lihat man qtchooserdan qtX-defaultpaket pada sistem berbasis Debian.

Memperbarui

Ada bug qtchooserdi Ubuntu 13.04 dan 13.10 yang tampaknya memengaruhi cara aplikasi Qt mendeteksi berbagai versi Qt, lihat https://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 . Ini juga dapat mempengaruhi QtCreator.

Graeme
sumber
Terima kasih! Saya perlu menggunakan qmake-qt4 alih-alih botak qmake - sangat mudah, tapi saya tidak bisa menemukan info yang saya butuhkan. Terima kasih!
Tamsyn Michael
@TamsynMichael - Ya, di sisi linux qmake di bin hanyalah sebuah symlink. Jadi, jika Anda menggunakan sesuatu seperti pembaruan-alternatif untuk beralih bolak-balik, itu mungkin ideal. Itu bukan dalam pembaruan-alternatif, dan hal-hal seperti skrip membangun PyQt ingin referensi langsung ke biner - bukan symlink.
RobotHumans
13

Ini membantu saya menggunakan -qt=qt5switch atauQT_SELECT=qt5 variabel lingkungan.

$ 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
pevik
sumber
Bagaimana dengan versi minor & patch? Bagaimana kita dapat memilih 5.9.4 atau 5.11 lebih dari 5.12 secara eksplisit, misalnya?
DavidJ
4

Ada metode yang lebih baik .

Jika Anda ingin membuat perubahan Anda permanen, Anda perlu memodifikasi /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conffile, yang merupakan symlink ke ../../../../share/qtchooser/qt4-x86_64-linux-gnu.conf.

Ini adalah contoh untuk sistem saya (Ubuntu 17.10 x64, Qt 5.10.1). Saya akan menyarankan untuk menyimpan file symlink asli dan targetnya di tempat (jika Anda ingin memulihkan konfigurasi asli). Dan juga membuat file baru di lokasi default (untuk konsistensi). Jadi inilah langkah-langkahnya:

Ganti nama file 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

Buat file konfigurasi target baru (dengan nama apa pun):

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

File ini harus berisi dua baris: baris pertama adalah path ke binari Qt (termasuk qmake) dan yang kedua adalah path ke perpustakaan Qt (termasuk file .so). Dalam kasus saya itu

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

Simpan dan tutup. Buat symlink default.confke file konfigurasi baru:

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

Periksa versi Qt Anda:

qmake --version

Sekarang harus selalu menggunakan versi yang ditentukan.

vstepaniuk
sumber
2

Di bawah beberapa distro seperti Debian Jessie Stable Anda dapat melakukan yang berikut:

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

Dan cukup pilih versi yang Anda butuhkan jika perlu diubah lagi jalankan saja baris ketiga.

inukaze
sumber
2

Banyak jawaban di atas akan berfungsi. Namun saya secara pribadi menemukan bahwa tidak ada yang gigih. Misalnya saya dapat menjalankan perintah ini:

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

Tetapi jika saya membuka terminal baru dan memeriksa versi Qt, itu akan kembali ke default, dan jika Anda memiliki beberapa versi Qt yang terinstal, default mungkin bukan yang Anda inginkan. Anda dapat mengetahui dengan menjalankan perintah ini:

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

Satu-satunya cara untuk membuat perubahan Anda tetap adalah dengan mengubah versi default. Untuk melakukan ini, edit /usr/lib/x86_64-linux-gnu/qtchooser/default.confdan ubah baris ini:

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

Di mana Anda mengubah qt5ke versi apa pun yang Anda inginkan. Anda dapat menggunakan perintah qtchooser -list-versionsuntuk melihat versi apa yang diinstal pada mesin Anda.

Mat
sumber
2

qmake( /usr/bin/qmake) sebenarnya hanyalah symlink ke qtchooser( /usr/bin/qtchooser).

Ini kutipan dari 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.

File /etc/xdg/qtchooser/default.confmemiliki prioritas lebih tinggi daripada /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf. Berikut adalah langkah-langkah bagaimana memilih versi Qt default untuk qmakecontoh sistem saya (Ubuntu 17.10 x64, Qt 5.10.1).

Buat /etc/xdg/qtchooserdirektori:

sudo mkdir /etc/xdg/qtchooser

Buat dan edit file konfigurasi:

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

Seperti dikatakan di atas. file ini harus mengandung dua baris: baris pertama adalah path ke binari Qt (termasuk qmake) dan yang kedua adalah path ke pustaka Qt (termasuk file .so). Dalam kasus saya ini adalah:

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

Simpan dan tutup. Sekarang qmakeharus menggunakan versi Qt yang ditentukan.

vstepaniuk
sumber
Sebuah symlink juga berfungsi: 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

Jika Anda ingin qt5, untuk qt4digunakan:

sudo apt-get install qt4-default
Pertanyaan JustProgramming
sumber
+1, luar biasa dan sederhana, Sayang sekali jawaban ini sangat rendah pada halaman
jpa
0

Dalam pengaturan default (saya) pada Fedora 23 yang memiliki keduanya qt-3.3.8dan qt-4.8.5lingkungan, juga perlu menambahkan /usr/libxx/qt4/bin/direktori sementara PATHuntuk mengizinkan cmake/ qmakepaket untuk menemukan versi yang tepat. Ini diperlukan saat membuat kode, bukan saat menjalankan aplikasi QT4 yang selesai.

Untuk beberapa alasan jalur QT3 sudah dipasang di sana secara permanen dan sayangnya pada awal PATH, yang mencegah pemilih versi QT bekerja dengan baik.

Gunnar
sumber