QtCreator CMake project - comment afficher tous les fichiers de projet
J'utilise QtCreator pour ouvrir le projet CMake. Certains répertoires en dehors de CMakeLists.txt ne contient que des fichiers d'en-têtes *.h et pour ces répertoires QtCreator dans l'arborescence du projet affiche uniquement CMakeLists.txt. Comment résoudre ce problème ? J'ai besoin de voir tous les fichiers de projet de QtCreator.
5 réponses
L'affichage du projet en tant que système de fichiers n'est pas du tout une solution car les paramètres de votre éditeur de projet, par exemple, ne s'appliqueraient pas. Et je n'aime pas ajouter des en-têtes à la cible exécutable, car ils n'y appartiennent pas réellement. Vous paralysez efficacement le fichier de projet pour fonctionner correctement avec un IDE particulier... pas bonne. L'option de nettoyage à mon humble avis serait:
FILE(GLOB_RECURSE LibFiles "include/*.hpp")
add_custom_target(headers SOURCES ${LibFiles})
En prime, vous obtenez vos inclusions affichées dans un dossier séparé. (emprunté à https://cmake.org/pipermail/cmake/2012-August/051811.html)
Je vous suggère de changer votre vue de projet en système de fichiers. Cela afficherait une vue où vous pourriez afficher n'importe quel fichier que vous voulez:
Vous pouvez diviser votre vue de projet en deux en cliquant sur le deuxième bouton à droite, si vous souhaitez toujours le mode projets.
Vous devez ajouter des fichiers d'en-tête à la liste de vos fichiers sources: add_executable(${Executable} ${Sources} ${headers})
Vous pouvez utiliser GLOB_RECURSE
si vous avez de nombreux fichiers d'en-tête:
FILE(GLOB_RECURSE INC_ALL "headers/*.h")
include_directories("headers")
add_executable(main "main.cpp" ${INC_ALL})
N'oubliez pas de relancer CMake (Build > Run Cmake).
Basé sur un autre thread posant la même question, j'ai trouvé une solution générique au problème, fonctionnant pour tous les IDE (au moins testé avec QtCreator et Visual Studio).
Peut être trouvé ici : 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)
L'utilisation est alors pour toutes les cibles dans les CMakeLists, ajoutez l'appel suivant(peut être fait dans la plupart des CMakeLists.txt après tout add_subdirectory :
include(add_ide_support.cmake)
target_add_ide_support(some-target)
Vous pouvez essayer CMakeProjectManager2 . Code pour afficher tous les fichiers déjà propagés en amont en tant que preuve de concept. Concept appliqué mais le code ne peut pas être appliqué tel quel pour certaines raisons. Donc, fonction d'attente simple en amont.