Файл подпроекта
cmake_minimum_required(VERSION 3.14)
set(TARGET_NAME subproject_name)
# GLOB_RECURSE for recursive search in subdirectories
file(GLOB_RECURSE TARGET_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/include/subproject_name/*.h
)
file(GLOB_RECURSE TARGET_SRC
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
)
# OR general glob without recursion
file(GLOB TARGET_SRC
${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/somedir/*.cpp
)
# Output: library (STATIC/SHARED/INTERFACE)
add_library(${TARGET_NAME} STATIC ${TARGET_SRC} ${TARGET_HEADERS})
# OR
# Output: executable
add_executable(${TARGET_NAME} STATIC ${TARGET_SRC} ${TARGET_HEADERS})
target_include_directories(${TARGET_NAME} PUBLIC
include/subproject_name
some_dir
${CMAKE_SOURCE_DIR}/other_subproject/include
)