Sie können verwenden quelle_gruppe . Hier ist ein konkretes Beispiel.
Angenommen, Sie haben eine Verzeichnisstruktur wie:
|-include
| some.h
|-sub
| someother.h
|-src
| some.cpp
|-sub
|-someother.cpp
Sammeln Sie die Dateien (einige Leute - einschließlich der Dokumentation - raten von der Verwendung von GLOB ab, aber das überlasse ich Ihnen, Sie können die Dateien einzeln auflisten, wenn Sie wollen, obwohl ich finde, dass GLOB in vielen Fällen völlig in Ordnung ist):
file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h")
file(GLOB HEADER_FILES_SUB "${CMAKE_CURRENT_SOURCE_DIR}/include/sub/*.h")
file(GLOB SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
file(GLOB SOURCE_FILES_SUB "${CMAKE_CURRENT_SOURCE_DIR}/src/sub/*.h")
# Setup your library or executable:
add_library(MY_LIB ${HEADER_FILES} ${HEADER_FILES_SUB}
${SOURCE_FILES} ${SOURCE_FILES_SUB})
# Here's the important part ("Header Files" and "Source Files" are literals.)
source_group("Header Files\\sub" ${HEADER_FILES_SUB})
source_group("Source Files\\sub" ${SOURCE_FILES_SUB})