Подтвердить что ты не робот

Список файлов заголовков в проекте Visual Studio С++, созданный cmake

Я создаю систему сборки на основе cmake для нашего продукта. Проблема в том, что проект Visual Studio, созданный cmake, не отображает файлы заголовков в браузере решений.

Что мне нужно добавить в CMakeList.txt для просмотра файлов заголовков? Предпочтительным решением является отсутствие необходимости перечислять каждый конкретный заголовочный файл.

Решение Вот решение, с которым я пришел:

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

Спасибо

4b9b3361

Ответ 1

Просто добавьте файлы заголовков вместе с исходными файлами:

PROJECT (Test)

ADD_EXECUTABLE(Test test.cpp test.h)

Или используя переменные:

PROJECT (Test)

SET(SOURCE
  test.cpp
)

SET(HEADERS
  test.h
)

ADD_EXECUTABLE(Test ${SOURCE} ${HEADERS})

Ответ 2

Основной трюк заключается в том, чтобы добавить файлы заголовков в одну из целей (исполняемый файл или библиотеку). Это особенно раздражает, потому что cmake уже знает все зависимости заголовка файла и должен позаботиться об этом для нас. Вы можете организовать его далее, используя команду source_group:

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

Обратите внимание, что вы тоже должны делать то же самое в Xcode.

Ответ 3

У меня была такая же проблема при работе в системе сборки для проекта Qt, и я вышел с этим решением, благодаря другим сообщениям на этой странице. Я включил полный пример, адаптированный из моих make файлов. Надеюсь, это поможет!

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)

Ответ 4

Я знаю, что этот ответ очень запоздал в игре, но в более поздних версиях Visual Studio вы можете изменить представление "CMake Target Mode" на "Folder View".

enter image description here

В этом представлении папок вы сможете увидеть все ваши файлы заголовков.

Если честно, я бы просто изменил представление в Visual Studio вместо изменения файлов CMake с помощью специальных хаков для Windows каждый день.