c++ qt clion

c++ - ¿Cómo configurar CLion IDE para Qt Framework?



(8)

¿Cómo configurar CLion IDE para Qt Framework? ¿Es este IDE compatible con Qt, o hay otros IDEs compatibles con Qt?

Solo quiero intentar usar algo más que Qt Creator.


CLion no es (todavía) compatible .

Visual Studio tiene un plugin Qt available .

Eclipse tenía un plugin Qt pero el trabajo se detuvo en él hace algún tiempo .

Esta pregunta ha recibido mucha atención últimamente (sin duda, a medida que aumenta la popularidad de CLion), así que califico que CLion admite Qt en el sentido de que, como utiliza CMake, puede manejar invocando el rcc , rcc y uic bastante rcc . Sin embargo, no comprende QML y, lo que es más importante, no comprende los archivos del proyecto QMake, lo que obviamente dificulta el uso de los proyectos existentes de Qt en CLion, ya que primero debe transferirlo a CMake.


Como menciona Tom Lank, los proyectos de Qt ahora se pueden gestionar con CMake, lo que hace feliz a CLion.

El manual de Qa5 de Qt5 describe cómo. Qt proporciona mucha magia debajo del capó aquí, y se explica mucho mejor en la documentación de CMake .

Una cosa que no se menciona en el manual de Qt CMake o superior es que también necesitará las líneas:

set(CMAKE_AUTOUIC ON) # if you have any .ui files set(CMAKE_AUTORCC ON) # if you have any .qrc files

Todas estas llamadas a set() probablemente deberían venir antes de la línea find_package(Qt5Widgets REQUIRED) . Incluya también cualquier archivo .ui o .qrc como dependencias en la llamada a add_executable() junto con sus archivos .cpp.

Inicialmente, esto fue muy confuso para mí al navegar por la web, pero no debería necesitar ninguna llamada a qt_*() o qt5_*() . Estos han sido reemplazados por lo que puedo decir.

Para probar que su CMakeLists.txt realmente funciona correctamente, puede intentar construir dentro de Qt Creator, cargando CMakeLists.txt como un proyecto y construcción.

Una vez confirmado, puede cargar el archivo CMakeLists.txt como un proyecto en CLion. Lo más probable es que necesite decirle a CMake dónde encontrar sus paquetes Qt con una línea como esta antes de su find_package :

set(CMAKE_PREFIX_PATH "C:/Qt/5.9/msvc2015_64")

Finalmente, si está ejecutando / construyendo para Windows, Qt ya no viene preconstruido con bibliotecas GCC / Mingw32. Necesitas construir con Visual Studio. Afortunadamente, CLion ahora es compatible con Visual Studio experimentalmente y he encontrado que funciona para proyectos de Qt; solo asegúrese de configurar la arquitectura (en Configuración -> Construir, Ejecución, Desarrollo -> CMake) a x86_amd64, para construir en modo de 64 bits y ser compatible con las librerías de precompilación de Qt.

Todo esto se prueba con CLion 2017.1, Qt 5.9 y el compilador de Visual Studio 2015.


Estaba tan desesperado como tú, hasta que leí esta discusión de Quora . ¡Funcionó perfectamente para mí!

Para resumir, hay 2 pasos principales:

En primer lugar, CLion usa CMake para compilar tu código. Se basa en los archivos de configuración de CMake (por ejemplo, "CMakeLists.txt"). Tienes que agregar comandos CMake basados ​​en Qt (las líneas con ''paquete_buscar'' y ''bibliotecas_enlace_destino''):

cmake_minimum_required(VERSION 3.5) project(myqtproject) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") set(SOURCE_FILES main.cpp) find_package(Qt5Widgets REQUIRED) <-- this line add_executable(myqtproject ${SOURCE_FILES}) target_link_libraries(myqtproject Qt5::Widgets) <-- this line

En segundo lugar, CLion tiene que usar el binario cmake instalado por Qt. Para eso, vaya a: ''Preferencias'' -> ''Compilación, Ejecución, Implementación'' -> ''CMake'' y en ''CMake options'' anexe la ruta de CMake que utiliza Qt, que debe estar en el directorio donde está instalado Qt. Por ejemplo, en OSX:

-DCMAKE_PREFIX_PATH=/Users/edouard/Qt/5.7/clang_64/lib/cmake

Puedes probar que todo está funcionando bien, haciendo un pequeño script de prueba en main.cpp :

#include <QApplication> #include <QDebug> using namespace std; int main() { qDebug() << QT_VERSION_STR; return 1; }

Que debería mostrar algo como:

/Users/edouard/Library/Caches/CLion2016.2/cmake/generated/myqtproject-89a4132/89a4132/Debug/untitled 5.7.0 Process finished with exit code 1

ACTUALIZAR

Estaba atascado con el problema de agregar módulos Qt5 (por ejemplo, QSql). Puede hacer esto agregando el CMakeLists.txt:

find_package(Qt5Sql REQUIRED)

justo después del otro find_package , y agregando en la última línea:

target_link_libraries(myqtproject Qt5::Widgets Qt5::Sql)

Puedes hacer esto con todos los otros módulos Qt5.


Este enfoque es una de las formas más sencillas de usar la versión más nueva de Qt .

Qt: 5.10.1 CLion: 2018.1.2 GDB: 8.1

Configuración del proyecto

En CLion :

  1. Crear un proyecto Ejecutable / Biblioteca de C ++
  2. Utilice este ejemplo " CMakeLists.txt " para proyectos comunes de consola / gui que utilizan: QtCore , QtWidgets y QtQuick

CMakeLists.txt:

cmake_minimum_required(VERSION 3.10) project(PROJECT_NAME) set(CMAKE_CXX_STANDARD 14) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_PREFIX_PATH "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/cmake") find_package(Qt5Core REQUIRED) find_package(Qt5Widgets REQUIRED) find_package(Qt5Quick REQUIRED) add_executable(PROJECT_NAME main.cpp MainWindow.cpp MainWindow.h qml.qrc) target_link_libraries(PROJECT_NAME Qt5::Core) target_link_libraries(PROJECT_NAME Qt5::Widgets) target_link_libraries(PROJECT_NAME Qt5::Quick)

  • Los archivos de recursos (.qrc) se deben agregar a la lista add_executable, para que moc pueda ejecutar su procedimiento en el recurso y el archivo interno como qmls, textos, ... sea accesible.

  • Los archivos qml deben incluirse en un archivo qrc ​​y cargarse usando QQmlApplicationEngine en tiempo de ejecución

Debuger:

Para tener una vista legible para humanos en sesiones de depuración de tipos Qt, se debe instalar un nuevo GDB en el sistema y las impresoras bonitas deben estar disponibles:

Impresoras bonitas para Qt5:

1- Lekensteyn Qt5 Pretty Printers (Trabajo):

Dirección: https://github.com/Lekensteyn/qt5printers

Configuración: ~ / .gdbinit

python import sys, os.path sys.path.insert(0, os.path.expanduser(''~/.gdb'')) import qt5printers qt5printers.register_printers(gdb.current_objfile()) end

2- Oficial (¡no funciona!):

"PATH_TO_QT/QT_VERSION/QT_ARCH/Tools/QtCreator/share/qtcreator/debugger/"

Configuración: ~ / .gdbinit

Como se indica en el archivo Léame incluido (¡pero no funciona!):

python sys.path.insert(1, ''<path/to/qtcreator>/share/qtcreator/debugger/'') python from gdbbridge import *

Herramientas externas

En "Archivo -> Configuración -> Herramientas -> Herramientas externas", agregue 4 herramientas externas:

Qt Creator:

Program: "PATH_TO_QT/QT_VERSION/QT_ARCH/Tools/QtCreator/bin/qtcreator" Arguments: $FilePath$

Diseñador de UI:

Program: "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/designer") Arguments: $FilePath$

LUpdate:

Program: "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/lupdate") Arguments: $FilePath$ -ts $FileNameWithoutExtension$.ts

Lingüista:

Program: "PATH_TO_QT/QT_VERSION/QT_ARCH/lib/bin/linguist") Arguments: $FilePath$

Ahora puede hacer clic con el botón derecho sobre estos tipos de archivos y debajo de la herramienta externa:

  1. Para .ui, seleccione Qt Creator / Designer e inicie el diseño de la interfaz de usuario
  2. Para .qml, seleccione Qt Creator y UI de diseño en el editor QML
  3. Para .qrc, seleccione Qt Creator y use editor de recursos
  4. Para .cpp / .ui seleccione LUpdate para crear su archivo de traducción
  5. Para .ts, seleccione Lingüista y comience la traducción

Embellecedor automático

Si en Qt Creator usaste un embellecedor como "Uncrustify" para embellecer automáticamente el código al guardar un archivo fuente, entonces:

  1. Instala el complemento " Guardar acciones "
  2. Debajo de "Archivo -> Configuración -> Guardar acciones"
  3. Comprobar:
    1. Acciones de guardado activas al guardar
    2. Reformatear el archivo
  4. Para un mejor rendimiento, desmarque:
    1. Organizar importaciones

Este enlace tiene un proyecto de inicio rápido, solo tiene que cambiar su CMAKE_PREFIX_PATH en CMakeLists a la ubicación del compilador empaquetado Qt que desea usar (el mío es gcc_64, el suyo por defecto es clang_64) - tiene algunas de las configuraciones mencionadas por otros respuestas ya establecidas:

https://github.com/ArneGockeln/qtstarter

Además, (en Linux basado en Ubuntu) tuve que instalar las bibliotecas de OpenGL como se describe aquí ( https://askubuntu.com/questions/11378/how-do-i-set-up-an-opengl-programming-environment )


Lo único que necesita es agregar QT install ..Qt/5.10.1/mingw53_32/bin; a tu RUTA. No se olvide de reiniciar la PC después, porque CLion por alguna razón no puede actualizar la ruta, solo el reinicio completo de la PC ayuda.


Puede construir aplicaciones QT en CLion. QT proporciona módulos CMake que se encargan de todos los detalles.

El siguiente script de CMake construye la aplicación de ejemplo '' Dynamic Layouts Example ''

cmake_minimum_required(VERSION 3.7) project(qtlayoutexample) set(CMAKE_CXX_STANDARD 14) # Find QT packages find_package(Qt5Widgets) # Add the include directories for the Qt 5 Widgets module to # the compile lines. include_directories(${Qt5Widgets_INCLUDE_DIRS}) # Find includes in corresponding build directories set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) # Add compiler flags for building executables (-fPIE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") qt5_generate_moc(main.cpp main.moc) # Tell CMake to create the qtlayoutexample executable add_executable(qtlayoutexample main.cpp dialog.cpp main.moc) #Link the qtlayoutexample executable to the Qt 5 widgets library. target_link_libraries(qtlayoutexample Qt5::Widgets)

Más información sobre la construcción de aplicaciones Qt con CMake .


Puede desarrollar fácilmente Qt con VC, Eclipse, CLion, etc. cuando utiliza CMake como herramienta de compilación. CMake generará los archivos de proyecto para cada IDE. Estaba usando varios IDEs de esta manera. Después de este viaje, soy un usuario aún más feliz de Qt Creator.