c++ c cmake qt-creator

c++ - Proyecto QtCreator CMake: cómo mostrar todos los archivos de proyecto



qt-creator (5)

Basándome en otro hilo que hacía la misma pregunta, encontré una solución genérica al problema, que funciona para todos los IDE (al menos probados con QtCreator y Visual Studio).

Se puede encontrar aquí: https://github.com/sauter-hq/cmake-ide-support

# /brief adds for the given target a fake executable targets which allows all # headers and symbols to be shown in IDEs. # /param target_name Which target properties should be added to the IDE support target. function(target_add_ide_support target_name) if (NOT TARGET ${target_name}) message(FATAL_ERROR "No target defined with name ${target_name}, cannot target_add_ide_support it.") endif() set (target_for_ide "${target_name}_ide_support") if (NOT TARGET ${target_for_ide}) file(GLOB_RECURSE target_for_ide_srcs "*.h" "*.hpp" "*.hxx" "*.c" "*.cpp" "*.cxx") add_executable(${target_for_ide} ${target_for_ide_srcs}) set_target_properties(${target_for_ide} PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1) endif() get_target_property(dirs ${target_name} INCLUDE_DIRECTORIES) target_include_directories(${target_for_ide} PRIVATE ${dirs}) endfunction(target_add_ide_support)

El uso es entonces para cualquier objetivo en las CMakeLists, agregue la siguiente llamada (se puede hacer en la parte superior de CMakeLists.txt después de todo add_subdirectory:

include(add_ide_support.cmake) target_add_ide_support(some-target)

Yo uso QtCreator para abrir el proyecto CMake. Algunos directorios, aparte de CMakeLists.txt, solo contienen archivos de encabezados * .h, y para esos directorios, QtCreator en la vista de árbol del proyecto solo muestra CMakeLists.txt. ¿Cómo arreglar eso? Necesito ver todos los archivos de proyecto de QtCreator.


Debe agregar archivos de encabezado a la lista de sus archivos de origen: add_executable(${Executable} ${Sources} ${headers})

Puede usar GLOB_RECURSE si tiene muchos archivos de encabezado:

FILE(GLOB_RECURSE INC_ALL "headers/*.h") include_directories("headers") add_executable(main "main.cpp" ${INC_ALL})

No te olvides de ejecutar CMake de nuevo (Build> Run Cmake).


Le sugiero que cambie su vista de proyecto a Sistema de archivos. Esto mostraría una vista donde podría ver cualquier archivo que desee:

Es posible que desee dividir la vista de su proyecto en dos haciendo clic en el segundo botón a la derecha, si aún desea el modo Proyectos.


Puedes probar CMakeProjectManager2 . Código para mostrar todos los archivos ya propagados al flujo ascendente como prueba de concepto. Se aplicó el concepto pero el código no se puede aplicar como está por algunas razones. Por lo tanto, la función de espera simple en sentido ascendente.


Ver el proyecto como un sistema de archivos no es una solución, ya que la configuración del editor de su proyecto, por ejemplo, no se aplicaría. Y no me gusta agregar encabezados al destino ejecutable, ya que en realidad no pertenecen allí. Efectivamente, paraliza el archivo del proyecto para que funcione bien con un IDE en particular ... no es bueno. La opción más limpia de IMHO sería:

FILE(GLOB_RECURSE LibFiles "include/*.hpp") add_custom_target(headers SOURCES ${LibFiles})

Como beneficio adicional, puede ver sus objetos incluidos en una carpeta separada. (tomado de https://cmake.org/pipermail/cmake/2012-August/051811.html )