Файл подпроекта


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
)