본문으로 바로가기

Linux :: Fedora에서 Qt5 개발 환경 구축하기

category Linux 2017. 12. 17. 07:25
Edit

Linux :: Fedora에서 Qt5 개발 환경 구축하기






Introduction


C++을 공부하면서 Qt5를 다시 건드려봤습니다. 아니, 사실 파이썬하다가 씨쁠쁠도 공부하게 된 가장 큰 이유 중 하나가 PyQt5가 아닌 Qt5를 이용해보고 싶어서였습니다. 근데 막상 공부하려니까 개발환경도 복잡한 데다가, qmake 때문에 너무 골치가 아팠죠. PyQt5 GUI 짜는 것처럼 Sublime Text 상에서 개발하고 싶어서 이것 저것 찾아봤는데, YouTube를 비롯한 거의 대부분 사이트의 튜토리얼에서는 일단 Qt Creator를 까는 것부터 시작하더라구요. 결국 이 글을 쓰기까지 꽤나 고생했었습니다.

이번 아티클에서는 리눅스(구체적으로는 Fedora 26. 하지만 크게 차이가 없습니다) 상에 Qt5를 깔고, Qt Creator 없이 컴파일하는 과정까지를 정리해보고자 합니다.



Installation


Download *.run file


설치 파일은, Qt5 다운로드 페이지에서 [get your open source package]를 클릭하여 받을 수 있습니다. 이 글을 작성하는 2017년 11월 기준 최신 버전은 5.9.2입니다. (이하 해당 파일 이름을 qt-opensource-linux-x64-5.9.2.run라고 가정합니다.)





Installation


다운로드 받은 폴더로 이동한 후, 이하의 커맨드를 쳐 권한 변경 후 실행시켜줍니다.

chmod +x qt-opensource-linux-x64-5.9.2.run
./qt-opensource-linux-x64.5.9.2.run





설치 과정 상에선 두 가지를 변경해주어야 하는데, 첫번째는 설치 경로입니다. 이 아티클에서는 /home/$USER/qt5라고 지정하지만, 상황에 따라 알맞게 변경해주셔도 괜찮습니다.




두번째로, 설치할 항목란에서 Desktop gcc 64-bit에 체크해주셔야합니다. 추후 qmake를 사용하기 위함입니다. 나머지는 딱히 필요없다면 채크해제 해도 무방합니다.




이외에는 Next나 Skip을 눌러 넘어갑시다.



Creating symbolic link of qmake





설치가 완료되었다면, qt5/5.9.2/gcc_64/bin/ 경로 안에 qmake 파일이 보일 겁니다. 이 파일을 실행시킬 때마다 전체 경로를 입력하기 번거로우므로, 소프트 링크를 만들고자 합니다. 커맨드 규칙은 다음과 같습니다.

ln -s [링크의 대상] [만들어질 바로가기 링크의 위치]



qt5 폴더로 이동하여, 이하의 커맨드를 통해 qmake 링크를 만들어줍시다.

ln -s 5.9.2/gcc_64/bin/qmake ./qmake





이제 어디서나 ~/qt5/qmake 커맨드를 통해 qmake를 호출할 수 있게 되었습니다 :D




Compile Steps


설치가 끝났으니, 간단한 프로그램을 만들어서 빌드해봅시다. qt5_test라는 폴더를 만들고 그 안에 main.cppqt5_test.pro라는 파일을 만들어 각각 이하의 코드를 입력합니다.



Code :: main.cpp


#include <QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget window;
window.resize(400,250);
window.setWindowTitle("Qt5 MiniApp");
window.show();
return app.exec();
}




Code :: qt5_test.pro


TEMPLATE = app
TARGET = miniapp
INCLUDEPATH += .
SOURCES += main.cpp
QT += widgets



*.pro 파일은 컴파일을 위한 프로젝트 세팅 파일입니다. make 이후 TARGET에 해당하는 miniapp이란 이름으로 실행 파일이 만들어집니다.

SOURCES는 컴파일에 들어갈 파일을 의미합니다. 추후 프로젝트가 커져서 헤더파일 및 타 소스 파일로 분리시킨 경우, 여기에 다 넣어줄 수 있습니다. 다음과 같이 말이죠.

SOURCES += main.cpp sample1.cpp sample2.cpp



이 아티클에서는 해당 폴더와 동일한 이름으로 만들었으나, 테스트 해본 결과 .pro 파일의 이름은 아무거나 해도 괜찮습니다. 다만 동일 폴더 내에는 하나의 .pro 파일만 존재해야 하니 주의합시다.



Compile on terminal


이제 빌드해봅시다. 터미널을 열어, qt5_test 디렉토리로 이동합니다.

이어서 아까 만들어두었던 ~/qt5/qmake와 make를 순서대로 입력하면, miniapp이라는 실행 파일이 생성됩니다.

sudo ~/qt5/qmake
sudo make



./miniapp이라는 커맨드를 통해, 어플리케이션을 실행시킬 수 있습니다. XD



%23%20Linux%20%3A%3A%20Qt5%20%uAC1C%uBC1C%20%uD658%uACBD%20%uAD6C%uCD95%uD558%uAE30%0A@%28Blog%29%5B%uD2F0%uC2A4%uD1A0%uB9AC%2CLinux%5D%0A%3Cbr%3E%3Cbr%3E%0A%0A%5BTOC%5D%0A%0A%3Cbr%3E%3Cbr%3E%0A%23%23%20Introduction%0A%3Cbr%3E%0AC++%uC744%20%uACF5%uBD80%uD558%uBA74%uC11C%20Qt5%uB97C%20%uB2E4%uC2DC%20%uAC74%uB4DC%uB824%uBD24%uC2B5%uB2C8%uB2E4.%20%uC544%uB2C8%2C%20%uC0AC%uC2E4%20%uD30C%uC774%uC36C%uD558%uB2E4%uAC00%20%uC528%uC060%uC060%uB3C4%20%uACF5%uBD80%uD558%uAC8C%20%uB41C%20%uAC00%uC7A5%20%uD070%20%uC774%uC720%20%uC911%20%uD558%uB098%uAC00%20PyQt5%uAC00%20%uC544%uB2CC%20Qt5%uB97C%20%uC774%uC6A9%uD574%uBCF4%uACE0%20%uC2F6%uC5B4%uC11C%uC600%uC2B5%uB2C8%uB2E4.%20%uADFC%uB370%20%uB9C9%uC0C1%20%uACF5%uBD80%uD558%uB824%uB2C8%uAE4C%20%uAC1C%uBC1C%uD658%uACBD%uB3C4%20%uBCF5%uC7A1%uD55C%20%uB370%uB2E4%uAC00%2C%20qmake%20%uB54C%uBB38%uC5D0%20%uB108%uBB34%20%uACE8%uCE58%uAC00%20%uC544%uD320%uC8E0.%20PyQt5%20GUI%20%uC9DC%uB294%20%uAC83%uCC98%uB7FC%20Sublime%20Text%20%uC0C1%uC5D0%uC11C%20%uAC1C%uBC1C%uD558%uACE0%20%uC2F6%uC5B4%uC11C%20%uC774%uAC83%20%uC800%uAC83%20%uCC3E%uC544%uBD24%uB294%uB370%2C%20YouTube%uB97C%20%uBE44%uB86F%uD55C%20%uAC70%uC758%20%uB300%uBD80%uBD84%20%uC0AC%uC774%uD2B8%uC758%20%uD29C%uD1A0%uB9AC%uC5BC%uC5D0%uC11C%uB294%20%uC77C%uB2E8%20Qt%20Creator%uB97C%20%uAE4C%uB294%20%uAC83%uBD80%uD130%20%uC2DC%uC791%uD558%uB354%uB77C%uAD6C%uC694.%20%uACB0%uAD6D%20%uC774%20%uAE00%uC744%20%uC4F0%uAE30%uAE4C%uC9C0%20%uAF64%uB098%20%uACE0%uC0DD%uD588%uC5C8%uC2B5%uB2C8%uB2E4.%0A%3Cbr%3E%0A%uC774%uBC88%20%uC544%uD2F0%uD074%uC5D0%uC11C%uB294%20%uB9AC%uB205%uC2A4%28%uAD6C%uCCB4%uC801%uC73C%uB85C%uB294%20Fedora%2026.%20%uD558%uC9C0%uB9CC%20%uD06C%uAC8C%20%uCC28%uC774%uAC00%20%uC5C6%uC2B5%uB2C8%uB2E4%29%20%uC0C1%uC5D0%20Qt5%uB97C%20%uAE54%uACE0%2C%20**Qt%20Creator**%20%uC5C6%uC774%20%uCEF4%uD30C%uC77C%uD558%uB294%20%uACFC%uC815%uAE4C%uC9C0%uB97C%20%uC815%uB9AC%uD574%uBCF4%uACE0%uC790%20%uD569%uB2C8%uB2E4.%0A%3Cbr%3E%3Cbr%3E%3Cbr%3E%0A%23%23%20Installation%0A%3Cbr%3E%0A%23%23%23%20Download%20*.run%20file%0A%3Cbr%3E%0A%uC124%uCE58%20%uD30C%uC77C%uC740%2C%20%5BQt5%20%uB2E4%uC6B4%uB85C%uB4DC%20%uD398%uC774%uC9C0%5D%28https%3A//www.qt.io/download-qt-for-application-development%29%uC5D0%uC11C%20%5Bget%20your%20open%20source%20package%5D%uB97C%20%uD074%uB9AD%uD558%uC5EC%20%uBC1B%uC744%20%uC218%20%uC788%uC2B5%uB2C8%uB2E4.%20%uC774%20%uAE00%uC744%20%uC791%uC131%uD558%uB294%202017%uB144%2011%uC6D4%20%uAE30%uC900%20%uCD5C%uC2E0%20%uBC84%uC804%uC740%20**5.9.2**%uC785%uB2C8%uB2E4.%20%28%uC774%uD558%20%uD574%uB2F9%20%uD30C%uC77C%20%uC774%uB984%uC744%20qt-opensource-linux-x64-**5.9.2**.run%uB77C%uACE0%20%uAC00%uC815%uD569%uB2C8%uB2E4.%29%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2016-10-00.png%29%0A%3Cbr%3E%3Cbr%3E%3Cbr%3E%0A%23%23%23%20Installation%0A%3Cbr%3E%0A%uB2E4%uC6B4%uB85C%uB4DC%20%uBC1B%uC740%20%uD3F4%uB354%uB85C%20%uC774%uB3D9%uD55C%20%uD6C4%2C%20%uC774%uD558%uC758%20%uCEE4%uB9E8%uB4DC%uB97C%20%uCCD0%20%uAD8C%uD55C%20%uBCC0%uACBD%20%uD6C4%20%uC2E4%uD589%uC2DC%uCF1C%uC90D%uB2C8%uB2E4.%0A%3Cbr%3E%0A%60%60%60plain%0Achmod%20+x%20qt-opensource-linux-x64-5.9.2.run%0A./qt-opensource-linux-x64.5.9.2.run%0A%60%60%60%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2016-33-29.png%29%0A%3Cbr%3E%3Cbr%3E%0A%uC124%uCE58%20%uACFC%uC815%20%uC0C1%uC5D0%uC120%20%uB450%20%uAC00%uC9C0%uB97C%20%uBCC0%uACBD%uD574%uC8FC%uC5B4%uC57C%20%uD558%uB294%uB370%2C%20%uCCAB%uBC88%uC9F8%uB294%20%uC124%uCE58%20%uACBD%uB85C%uC785%uB2C8%uB2E4.%20%uC774%20%uC544%uD2F0%uD074%uC5D0%uC11C%uB294%20/home/**%24USER**/**qt5**%uB77C%uACE0%20%uC9C0%uC815%uD558%uC9C0%uB9CC%2C%20%uC0C1%uD669%uC5D0%20%uB530%uB77C%20%uC54C%uB9DE%uAC8C%20%uBCC0%uACBD%uD574%uC8FC%uC154%uB3C4%20%uAD1C%uCC2E%uC2B5%uB2C8%uB2E4.%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2016-36-49.png%29%0A%3Cbr%3E%3Cbr%3E%0A%uB450%uBC88%uC9F8%uB85C%2C%20%uC124%uCE58%uD560%20%uD56D%uBAA9%uB780%uC5D0%uC11C%20**Desktop%20gcc%2064-bit**%uC5D0%20%uCCB4%uD06C%uD574%uC8FC%uC154%uC57C%uD569%uB2C8%uB2E4.%20%uCD94%uD6C4%20qmake%uB97C%20%uC0AC%uC6A9%uD558%uAE30%20%uC704%uD568%uC785%uB2C8%uB2E4.%20%uB098%uBA38%uC9C0%uB294%20%uB531%uD788%20%uD544%uC694%uC5C6%uB2E4%uBA74%20%uCC44%uD06C%uD574%uC81C%20%uD574%uB3C4%20%uBB34%uBC29%uD569%uB2C8%uB2E4.%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2016-57-35.png%29%0A%3Cbr%3E%3Cbr%3E%0A%uC774%uC678%uC5D0%uB294%20Next%uB098%20Skip%uC744%20%uB20C%uB7EC%20%uB118%uC5B4%uAC11%uC2DC%uB2E4.%0A%3Cbr%3E%3Cbr%3E%3Cbr%3E%0A%23%23%23%20Creating%20symbolic%20link%20of%20qmake%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2016-40-11.png%29%0A%3Cbr%3E%3Cbr%3E%0A%uC124%uCE58%uAC00%20%uC644%uB8CC%uB418%uC5C8%uB2E4%uBA74%2C%20**qt5**/**5.9.2**/gcc_64/bin/%20%uACBD%uB85C%20%uC548%uC5D0%20qmake%20%uD30C%uC77C%uC774%20%uBCF4%uC77C%20%uAC81%uB2C8%uB2E4.%20%uC774%20%uD30C%uC77C%uC744%20%uC2E4%uD589%uC2DC%uD0AC%20%uB54C%uB9C8%uB2E4%20%uC804%uCCB4%20%uACBD%uB85C%uB97C%20%uC785%uB825%uD558%uAE30%20%uBC88%uAC70%uB85C%uC6B0%uBBC0%uB85C%2C%20%uC18C%uD504%uD2B8%20%uB9C1%uD06C%uB97C%20%uB9CC%uB4E4%uACE0%uC790%20%uD569%uB2C8%uB2E4.%20%uCEE4%uB9E8%uB4DC%20%uADDC%uCE59%uC740%20%uB2E4%uC74C%uACFC%20%uAC19%uC2B5%uB2C8%uB2E4.%0A%3Cbr%3E%0A%60%60%60plain%0Aln%20-s%20%5B%uB9C1%uD06C%uC758%20%uB300%uC0C1%5D%20%5B%uB9CC%uB4E4%uC5B4%uC9C8%20%uBC14%uB85C%uAC00%uAE30%20%uB9C1%uD06C%uC758%20%uC704%uCE58%5D%0A%60%60%60%0A%3Cbr%3E%3Cbr%3E%0Aqt5%20%uD3F4%uB354%uB85C%20%uC774%uB3D9%uD558%uC5EC%2C%20%uC774%uD558%uC758%20%uCEE4%uB9E8%uB4DC%uB97C%20%uD1B5%uD574%20qmake%20%uB9C1%uD06C%uB97C%20%uB9CC%uB4E4%uC5B4%uC90D%uC2DC%uB2E4.%0A%3Cbr%3E%0A%60%60%60plain%0Aln%20-s%205.9.2/gcc_64/bin/qmake%20./qmake%0A%60%60%60%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2017-07-08.png%29%0A%3Cbr%3E%3Cbr%3E%0A%0A%uC774%uC81C%20%uC5B4%uB514%uC11C%uB098%20%7E/**qt5**/qmake%20%uCEE4%uB9E8%uB4DC%uB97C%20%uD1B5%uD574%20qmake%uB97C%20%uD638%uCD9C%uD560%20%uC218%20%uC788%uAC8C%20%uB418%uC5C8%uC2B5%uB2C8%uB2E4%20%3AD%0A%3Cbr%3E%3Cbr%3E%3Cbr%3E%3Cbr%3E%0A%23%23%20Compile%20Steps%0A%3Cbr%3E%0A%uC124%uCE58%uAC00%20%uB05D%uB0AC%uC73C%uB2C8%2C%20%uAC04%uB2E8%uD55C%20%uD504%uB85C%uADF8%uB7A8%uC744%20%uB9CC%uB4E4%uC5B4%uC11C%20%uBE4C%uB4DC%uD574%uBD05%uC2DC%uB2E4.%20**qt5_test**%uB77C%uB294%20%uD3F4%uB354%uB97C%20%uB9CC%uB4E4%uACE0%20%uADF8%20%uC548%uC5D0%20**main.cpp**%uC640%20**qt5_test.pro**%uB77C%uB294%20%uD30C%uC77C%uC744%20%uB9CC%uB4E4%uC5B4%20%uAC01%uAC01%20%uC774%uD558%uC758%20%uCF54%uB4DC%uB97C%20%uC785%uB825%uD569%uB2C8%uB2E4.%0A%3Cbr%3E%3Cbr%3E%3Cbr%3E%0A%23%23%23%20Code%20%3A%3A%20main.cpp%0A%3Cbr%3E%0A%60%60%60c++%0A%23include%20%3CQApplication%3E%0A%23include%20%3CQWidget%3E%0A%0Aint%20main%28int%20argc%2C%20char%20*argv%5B%5D%29%0A%7B%0A%09QApplication%20app%28argc%2C%20argv%29%3B%0A%09QWidget%20window%3B%0A%09window.resize%28400%2C250%29%3B%0A%09window.setWindowTitle%28%22Qt5%20MiniApp%22%29%3B%0A%09window.show%28%29%3B%0A%0A%09return%20app.exec%28%29%3B%0A%7D%0A%60%60%60%0A%3Cbr%3E%3Cbr%3E%3Cbr%3E%0A%23%23%23%20Code%20%3A%3A%20qt5_test.pro%0A%3Cbr%3E%0A%60%60%60plain%0ATEMPLATE%20%3D%20app%0ATARGET%20%3D%20miniapp%0AINCLUDEPATH%20+%3D%20.%0ASOURCES%20+%3D%20main.cpp%0AQT%20+%3D%20widgets%0A%60%60%60%0A%3Cbr%3E%3Cbr%3E%0A*.pro%20%uD30C%uC77C%uC740%20%uCEF4%uD30C%uC77C%uC744%20%uC704%uD55C%20%uD504%uB85C%uC81D%uD2B8%20%uC138%uD305%20%uD30C%uC77C%uC785%uB2C8%uB2E4.%20make%20%uC774%uD6C4%20TARGET%uC5D0%20%uD574%uB2F9%uD558%uB294%20miniapp%uC774%uB780%20%uC774%uB984%uC73C%uB85C%20%uC2E4%uD589%20%uD30C%uC77C%uC774%20%uB9CC%uB4E4%uC5B4%uC9D1%uB2C8%uB2E4.%0A%3Cbr%3E%0ASOURCES%uB294%20%uCEF4%uD30C%uC77C%uC5D0%20%uB4E4%uC5B4%uAC08%20%uD30C%uC77C%uC744%20%uC758%uBBF8%uD569%uB2C8%uB2E4.%20%uCD94%uD6C4%20%uD504%uB85C%uC81D%uD2B8%uAC00%20%uCEE4%uC838%uC11C%20%uD5E4%uB354%uD30C%uC77C%20%uBC0F%20%uD0C0%20%uC18C%uC2A4%20%uD30C%uC77C%uB85C%20%uBD84%uB9AC%uC2DC%uD0A8%20%uACBD%uC6B0%2C%20%uC5EC%uAE30%uC5D0%20%uB2E4%20%uB123%uC5B4%uC904%20%uC218%20%uC788%uC2B5%uB2C8%uB2E4.%20%uB2E4%uC74C%uACFC%20%uAC19%uC774%20%uB9D0%uC774%uC8E0.%0A%3Cbr%3E%0A%60%60%60plain%0ASOURCES%20+%3D%20main.cpp%20sample1.cpp%20sample2.cpp%0A%60%60%60%0A%3Cbr%3E%3Cbr%3E%0A%uC774%20%uC544%uD2F0%uD074%uC5D0%uC11C%uB294%20%uD574%uB2F9%20%uD3F4%uB354%uC640%20%uB3D9%uC77C%uD55C%20%uC774%uB984%uC73C%uB85C%20%uB9CC%uB4E4%uC5C8%uC73C%uB098%2C%20%20%uD14C%uC2A4%uD2B8%20%uD574%uBCF8%20%uACB0%uACFC%20**.pro**%20%uD30C%uC77C%uC758%20%uC774%uB984%uC740%20%uC544%uBB34%uAC70%uB098%20%uD574%uB3C4%20%uAD1C%uCC2E%uC2B5%uB2C8%uB2E4.%20%uB2E4%uB9CC%20**%uB3D9%uC77C%20%uD3F4%uB354%20%uB0B4%uC5D0%uB294%20%uD558%uB098%uC758%20.pro%20%uD30C%uC77C%uB9CC%20%uC874%uC7AC%uD574%uC57C%20%uD558%uB2C8%20%uC8FC%uC758%uD569%uC2DC%uB2E4.**%0A%3Cbr%3E%3Cbr%3E%3Cbr%3E%0A%0A%23%23%23%20Compile%20on%20terminal%0A%3Cbr%3E%0A%uC774%uC81C%20%uBE4C%uB4DC%uD574%uBD05%uC2DC%uB2E4.%20%uD130%uBBF8%uB110%uC744%20%uC5F4%uC5B4%2C%20**qt5_test**%20%uB514%uB809%uD1A0%uB9AC%uB85C%20%uC774%uB3D9%uD569%uB2C8%uB2E4.%0A%3Cbr%3E%0A%uC774%uC5B4%uC11C%20%uC544%uAE4C%20%uB9CC%uB4E4%uC5B4%uB450%uC5C8%uB358%20%7E/**qt5**/qmake%uC640%20make%uB97C%20%uC21C%uC11C%uB300%uB85C%20%uC785%uB825%uD558%uBA74%2C%20**miniapp**%uC774%uB77C%uB294%20%uC2E4%uD589%20%uD30C%uC77C%uC774%20%uC0DD%uC131%uB429%uB2C8%uB2E4.%0A%3Cbr%3E%0A%60%60%60plain%0Asudo%20%7E/qt5/qmake%0Asudo%20make%0A%60%60%60%0A%3Cbr%3E%3Cbr%3E%0A**./miniapp**%uC774%uB77C%uB294%20%uCEE4%uB9E8%uB4DC%uB97C%20%uD1B5%uD574%2C%20%uC5B4%uD50C%uB9AC%uCF00%uC774%uC158%uC744%20%uC2E4%uD589%uC2DC%uD0AC%20%uC218%20%uC788%uC2B5%uB2C8%uB2E4.%20XD%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2017-21-29.png%29%0A%3Cbr%3E%0A%21%5BAlt%20text%5D%28./Screenshot%20from%202017-11-02%2017-21-48.png%29