Liste des fichiers d’en-tête dans le projet Visual Studio C ++ généré par cmake

Je construis un système de construction basé sur cmake pour notre produit. Le problème est que le projet Visual Studio, généré par cmake, n’affiche pas les fichiers d’en-tête dans le navigateur de solution.

Qu’est-ce que je dois append dans CMakeList.txt pour répertorier les fichiers d’en-tête? La solution préférée est celle où il n’est pas nécessaire de répertorier chaque fichier d’en-tête particulier.

Solution Voici une solution fournie avec:

file(GLOB_RECURSE INCS "*.h") add_library(myLib ${SRCS} ${INCS}) 

Merci

Ajoutez simplement les fichiers d’en-tête avec les fichiers source:

 PROJECT (Test) ADD_EXECUTABLE(Test test.cpp test.h) 

Ou en utilisant des variables:

 PROJECT (Test) SET(SOURCE test.cpp ) SET(HEADERS test.h ) ADD_EXECUTABLE(Test ${SOURCE} ${HEADERS}) 

L’astuce de base consiste à append les fichiers d’en-tête à l’une des cibles (exécutable ou bibliothèque). Cela est particulièrement irritant car cmake connaît déjà toutes les dépendances des fichiers d’en-tête et devrait en prendre soin pour nous. Vous pouvez l’organiser davantage en utilisant la commande source_group :

  source_group("My Headers" FILES ${MY_HDRS}) 

Notez que vous devez faire la même chose dans Xcode également.

J’ai eu le même problème en travaillant sur un système de construction pour un projet Qt et je suis sorti avec cette solution, grâce aux autres articles de cette page. J’ai inclus un exemple complet adapté de mes makefiles. J’espère que cela t’aides!

 cmake_minimum_required (VERSION 2.6) project (DemoSolution) find_package(Qt4 REQUIRED) include(${QT_USE_FILE}) add_definitions(${QT_DEFINITIONS}) include_directories (../../include/) set(CMAKE_INCLUDE_CURRENT_DIR ON) file(GLOB Demo_SOURCES *.cpp) file(GLOB Demo_HEADERS *.hpp) file(GLOB Demo_FORMS *.ui) file(GLOB Demo_RESOURCES resources.qrc) qt4_wrap_cpp(Demo_MOC ${Demo_HEADERS}) qt4_wrap_ui(Demo_FORMS_HEADERS ${Demo_FORMS}) qt4_add_resources(Demo_RESOURCES_RCC ${Demo_RESOURCES}) source_group("Headers" FILES ${Demo_HEADERS}) source_group("MOC" FILES ${Demo_MOC}) set(QT_USE_QTNETWORK, true) set(QT_USE_QTSQL, true) set(QT_USE_QTXML, true) add_library(Demo SHARED ${Demo_SOURCES} ${Demo_HEADERS} ${Demo_MOC} ${Demo_FORMS_HEADERS} ${Demo_RESOURCES_RCC} ) target_link_libraries(Demo ${QT_LIBRARIES}) add_definitions(-D_DEMO_EXPORTS)