web-dev-qa-db-fra.com

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 solutions.

Que dois-je ajouter 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 que j'ai trouvée:

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

Merci

52
dimba

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})
40
tim_hutton

L'astuce de base consiste à ajouter les fichiers d'en-tête à l'une des cibles (exécutable ou bibliothèque). C'est particulièrement irritant car cmake connaît déjà toutes les dépendances du fichier d'en-tête et devrait s'en occuper pour nous. Vous pouvez l'organiser davantage à l'aide de la commande source_group :

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

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

22
metasim

J'ai eu le même problème en travaillant sur un système de build 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)
9
npclaudiu

Je sais que cette réponse est vraiment en retard dans le jeu, mais dans les versions plus récentes de Visual Studio, vous pouvez changer la vue de "CMake Target Mode" à une "Folder View"

enter image description here

Dans cette vue de dossier, vous pourrez voir tous vos fichiers d'en-tête.

Pour être honnête, je voudrais simplement changer la vue dans Visual Studio plutôt que de modifier les fichiers CMake avec des hacks spécifiques à Windows n'importe quel jour.

0
tjwrona1992