ฉันจะเปลี่ยนเวอร์ชันของ Qt ที่ใช้สำหรับ qmake ได้อย่างไร


31

ฉันรู้สึกว่าควรจะมีวิธีง่ายๆในการทำเช่นนี้ แต่ googlefu ของฉันล้มเหลวดังนั้นฉันจึงขอขอบคุณข้อมูลบางอย่างเกี่ยวกับวิธีการเปลี่ยน (หรือเปลี่ยนแปลงอย่างถาวร) ซึ่งรุ่น Qt ที่ใช้เมื่อทำ qmake หากฉันถามว่าฉันได้รับเวอร์ชันใดต่อไปนี้:

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

ฉันติดตั้ง QtCreator แล้ว แต่ฉันไม่แน่ใจว่าจะไปจากที่นี่

คำตอบ:


16

สิ่งนี้ไม่จำเป็นต้องใช้เฉพาะ Unix / Linux ดังนั้นคุณน่าจะถามเรื่องนี้กับ Stack Overflow ได้ดีกว่า ไม่น้อยไปกว่านี้ QtCreator นั้นค่อนข้างดีในการตรวจจับการติดตั้ง Qt ทางเลือกเพียงแค่สร้างโครงการใหม่และดูใต้Projectsแท็บทางด้านซ้าย คุณสามารถตั้งค่าคอนฟิกบิลด์ต่าง ๆ ได้ ควรมีช่องดรอปดาวน์ให้เลือกจากเวอร์ชั่นที่ติดตั้งหลากหลายสำหรับการกำหนดค่าแต่ละรายการ

มิฉะนั้นดูเหมือนว่าจะใช้QTDIRตัวแปรสภาพแวดล้อมเพื่อตั้งค่ารุ่น Qt โดยค่าเริ่มต้น QtCreator ตั้งค่านี้เป็น/usr/share/qt4สำหรับฉันดังนั้นให้ตั้งค่าเป็นพา ธ ที่เทียบเท่า (เช่นไฟล์ที่เป็นไฟล์กำหนดค่า) ควรสร้าง qmake build ด้วยเวอร์ชันอื่น คุณสามารถทดสอบกับสิ่งที่ชอบ:

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

อาจเป็นไปได้ที่จะตั้งค่านี้ใน.proไฟล์ แต่ถ้าเป็นเช่นนั้นจะไม่มีเอกสาร (เช่นเดียวกับqmakeตัวแปรจำนวนมาก)

นอกจากนี้หากคุณต้องการสร้างด้วยรุ่นหลักเฉพาะqmakeมักจะเชื่อมโยงกับไบนารีสำหรับรุ่นหลักเริ่มต้น ไบนารีจริงqmake-qt4, qmake-qt5ฯลฯ นอกจากนี้เห็นman qtchooserและqtX-defaultแพคเกจในระบบ Debian ตาม

ปรับปรุง

มีข้อผิดพลาดก็คือqtchooserบน Ubuntu 13.04 และ 13.10 ซึ่งดูเหมือนจะมีผลต่อวิธีการใช้งาน Qt ตรวจสอบรุ่นที่แตกต่างกัน Qt ดูhttps://bugs.launchpad.net/ubuntu/+source/qt4-x11/+bug/1177823 สิ่งนี้อาจส่งผลกระทบต่อ QtCreator ด้วย


ขอบคุณ! ฉันต้องการใช้ qmake-qt4 แทนหัวล้าน qmake - ง่ายมาก แต่ฉันไม่พบข้อมูลที่ต้องการ ขอบคุณ!
Tamsyn Michael

@TamsynMichael - ใช่บน linux ด้าน qmake ใน bin เป็นเพียง symlink ดังนั้นหากคุณใช้บางสิ่งบางอย่างเช่นทางเลือกการอัปเดตเพื่อสลับไปมานั่นอาจเป็นอุดมคติ มันไม่ได้อยู่ในการอัพเดททางเลือกและสิ่งต่าง ๆ เช่นสคริปต์สร้าง PyQt ต้องการการอ้างอิงโดยตรงไปยังไบนารีอย่างไรก็ตามไม่ใช่ symlink
RobotHumans

13

มันช่วยให้ฉันใช้-qt=qt5สวิตช์หรือQT_SELECT=qt5ตัวแปรสภาพแวดล้อม

$ 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

แล้วรุ่นรองและแพทช์ล่ะ? เราจะเลือก 5.9.4 หรือ 5.11 สำหรับ 5.12 อย่างชัดเจนได้อย่างไร
DavidJ

4

มีวิธีที่ดีกว่าคือ

หากคุณต้องการที่จะทำให้การเปลี่ยนแปลงของคุณถาวรคุณต้องแก้ไข/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.confไฟล์ซึ่งเป็น symlink ../../../../share/qtchooser/qt4-x86_64-linux-gnu.confไป

นี่คือตัวอย่างสำหรับระบบของฉัน (Ubuntu 17.10 x64, Qt 5.10.1) ฉันขอแนะนำให้เก็บทั้งไฟล์ symlink ดั้งเดิมและเป้าหมายไว้ (ในกรณีที่คุณต้องการกู้คืนการกำหนดค่าดั้งเดิม) และสร้างไฟล์ใหม่ในตำแหน่งเริ่มต้น (เพื่อความมั่นคง) ดังนั้นนี่คือขั้นตอน:

เปลี่ยนชื่อไฟล์ 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

สร้างไฟล์กำหนดค่าเป้าหมายใหม่ (ด้วยชื่อใด ๆ ):

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

ไฟล์นี้จะต้องมีสองบรรทัด: บรรทัดแรกคือเส้นทางไปยังไบนารีของ Qt (รวมถึง qmake) และที่สองคือเส้นทางไปยังไลบรารี Qt (รวมถึงไฟล์. so) ในกรณีของฉันมันเป็น

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

บันทึกและปิด สร้าง symlink default.confไปยังไฟล์กำหนดค่าใหม่:

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

ตรวจสอบรุ่น Qt ของคุณ:

qmake --version

ตอนนี้มันควรจะใช้รุ่นที่ระบุ


2

ภายใต้ distros บางอย่างเช่น Debian Jessie Stable คุณสามารถทำสิ่งต่อไปนี้:

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

และเลือกรุ่นที่คุณต้องการหากคุณต้องการเปลี่ยนอีกครั้งเพียงแค่เรียกใช้บรรทัดที่สามอีกครั้ง


2

หลายคำตอบข้างต้นจะได้ผล อย่างไรก็ตามฉันพบว่าเป็นการส่วนตัวที่ไม่มีใครขัดขืน เช่นฉันสามารถเรียกใช้คำสั่งนี้:

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

แต่ถ้าฉันเปิดเทอร์มินัลใหม่และตรวจสอบรุ่น Qt มันจะกลับไปเป็นค่าเริ่มต้นและหากคุณมี Qt หลายเวอร์ชันการติดตั้งค่าเริ่มต้นอาจไม่ใช่สิ่งที่คุณต้องการ คุณสามารถบอกได้ด้วยการรันคำสั่งนี้:

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

วิธีเดียวที่จะทำให้การเปลี่ยนแปลงของคุณติดคือการเปลี่ยนเวอร์ชันเริ่มต้น หากต้องการทำสิ่งนี้ให้แก้ไข/usr/lib/x86_64-linux-gnu/qtchooser/default.confและเปลี่ยนแปลงบรรทัดนี้:

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

คุณqt5จะเปลี่ยนเป็นเวอร์ชั่นไหนก็ได้ที่คุณต้องการ คุณสามารถใช้คำสั่งqtchooser -list-versionsเพื่อดูเวอร์ชันที่ติดตั้งบนเครื่องของคุณ


2

qmake( /usr/bin/qmake) อันที่จริงเป็นเพียงการเชื่อมโยงไปยังqtchooser( /usr/bin/qtchooser)

นี่คือใบเสนอราคาจาก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.

ไฟล์ที่มีความสำคัญสูงกว่า/etc/xdg/qtchooser/default.conf /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.confนี่คือขั้นตอนของการเลือกรุ่น Qt เริ่มต้นสำหรับqmakeตัวอย่างของระบบของฉัน (Ubuntu 17.10 x64, Qt 5.10.1)

สร้าง/etc/xdg/qtchooserไดเรกทอรี:

sudo mkdir /etc/xdg/qtchooser

สร้างและแก้ไขไฟล์กำหนดค่า:

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

ดังกล่าวข้างต้น ไฟล์นี้จะต้องมีสองบรรทัด: บรรทัดแรกคือเส้นทางไปยังไบนารีของ Qt (รวมถึง qmake) และที่สองคือเส้นทางไปยังไลบรารี Qt (รวมถึงไฟล์. so) ในกรณีของฉันมันจะเป็น:

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

บันทึกและปิด ตอนนี้qmakeควรใช้รุ่น Qt ที่ระบุ


symlink ยังทำงาน: sudo mkdir -p / etc / XDG / qtchooser && sudo -s LN /usr/share/qtchooser/qt5-x86_64-linux-gnu.conf /etc/xdg/qtchooser/default.conf
maharvey67

1
sudo apt-get install qt5-default

หากคุณต้องการqt5สำหรับการqt4ใช้งาน:

sudo apt-get install qt4-default

+1, ยอดเยี่ยมและเรียบง่ายคำตอบนี้แย่มากในหน้าเพจ
jpa

0

ในการตั้งค่าเริ่มต้น (ของฉัน) ใน Fedora 23 ที่มีทั้งคู่qt-3.3.8และqt-4.8.5สภาพแวดล้อมคุณจำเป็นต้องเพิ่ม/usr/libxx/qt4/bin/ไดเรกทอรีชั่วคราวในPATHเพื่อให้cmake/ qmakeแพ็คเกจสามารถค้นหารุ่นที่ถูกต้องได้ สิ่งนี้จำเป็นเมื่อสร้างรหัสไม่ใช่เมื่อเรียกใช้แอป QT4 ที่เสร็จสิ้นแล้ว

ด้วยเหตุผลบางอย่างมีการติดตั้งพา ธ QT3 ไว้อย่างถาวรและน่าเสียดายเมื่อเริ่มต้นPATHซึ่งทำให้ตัวเลือกเวอร์ชัน QT ทำงานได้อย่างถูกต้อง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.