it-swarm.com.de

QtCreator CMake-Projekt - Anzeigen aller Projektdateien

Ich verwende QtCreator, um das CMake-Projekt zu öffnen. Einige Verzeichnisse außer CMakeLists.txt enthalten nur Header-Dateien * .h und für diese Verzeichnisse zeigt QtCreator in der Projektstrukturansicht nur CMakeLists.txt an. Wie kann ich das beheben? Ich muss alle Projektdateien von QtCreator sehen.

26
Irbis

Das Anzeigen eines Projekts als Dateisystem ist keine Lösung, da Ihre Einstellungen für den Projekteditor zum Beispiel nicht zutreffen würden ..__ und ich möchte keine Kopfzeilen zum ausführbaren Ziel hinzufügen, da sie eigentlich nicht dorthin gehören. Sie lähmen die Projektdatei effektiv, um gut mit einer bestimmten IDE zu arbeiten ... nicht gut . Die Bereinigungsoption IMHO wäre:

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

Als Bonus erhalten Sie Ihre Include-Dateien in einem separaten Ordner. (Ausgeliehen bei https://cmake.org/pipermail/cmake/2012-August/051811.html )

25
Slava

Ich würde vorschlagen, dass Sie Ihre Projektansicht auf Dateisystem umstellen. Dies würde eine Ansicht anzeigen, in der Sie jede gewünschte Datei anzeigen können:

enter image description here

Sie können Ihre Projektansicht in zwei Teile aufteilen, indem Sie auf die zweite bis rechte Schaltfläche klicken, wenn Sie noch den Projektmodus wünschen.

12
Jingjie Zheng

Sie sollten Header-Dateien zur Liste Ihrer Quelldateien hinzufügen: add_executable(${Executable} ${Sources} ${headers})

Sie können GLOB_RECURSE verwenden, wenn viele Header-Dateien vorhanden sind:

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

Vergessen Sie nicht, CMake erneut auszuführen (Erstellen> Cmake ausführen).

7

Basierend auf einem anderen Thread, der die gleiche Frage stellte, fand ich eine generische Lösung für das Problem, die für alle IDEs funktionierte (zumindest mit QtCreator und Visual Studio getestet).

Kann hier gefunden werden: 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)

Die Verwendung erfolgt dann für alle Ziele in den CMakeLists. Fügen Sie den folgenden Aufruf hinzu (kann in der obersten CMakeLists.txt nach allen add_subdirectory erfolgen:

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

Sie können CMakeProjectManager2 versuchen. Code, um alle Dateien anzuzeigen, die bereits als Proof of Concept an den Upstream weitergegeben wurden. Das Konzept wird angewendet, aber der Code kann aus bestimmten Gründen nicht so angewendet werden. Also, einfache Wartefunktion im Upstream.

1
Monah Tuk

Es gibt einen geschlossenen Fehlerbericht zu diesem Problem: CMake-Projekt zeigt keine Dateien .

In diesem speziellen Fall befand sich das Problem mit dem gewählten Generator Ninja, der von QtCreator nicht gut unterstützt wird.

Bitte ändern Sie das zu "CodeBlocks - Ninja". Creator benötigt den CodeBlocks Extra Generator.

Sie sollten eine Warnung darüber anzeigen, wenn Sie das Kit schweben (und das Kit sollte ein Warnsymbol vor seinem Namen haben).

Mit CodeBlocks - Ninja hat es auch für mich gelöst. 

Insgesamt kann es helfen, ein paar Generatoren auszuprobieren ...

0
AntonyG