У меня есть проект, который не был разделен на библиотеки, но источник организован в дереве каталогов. Я не знаю, как сказать cmake пойти по каталогу, а затем добавить источник в этом каталоге в проект, определенный в родительском каталоге. Я попытался сделать следующее:
в проекте / источнике / CMakelists.txt:
set(SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/unitTest/main.cpp
)
add_subdirectory("${PROJECT_SOURCE_DIR}/folder1")
add_executable(UnitTestRNG ${SOURCE} ${HEADERS})
затем в проекте / source / folder1 / CMakeLists.txt:
set(SOURCE
${SOURCE}
${CMAKE_CURRENT_SOURCE_DIR}/file1.cpp
${CMAKE_CURRENT_SOURCE_DIR}/file2.cpp
)
set(HEADERS
${HEADERS}
${CMAKE_CURRENT_SOURCE_DIR}/file1.hpp
${CMAKE_CURRENT_SOURCE_DIR}/file2.hpp
)
используя некоторые операторы message (), я обнаружил, что дочерняя папка получит содержимое переменной SOURCE, но ее новое назначение этой переменной не сохранится при возврате в родительский CMakeLists.txt
Поиск примеров и учебник по cmake привели меня к выводу, что:
- Исходные файловые структуры обычно плоские в проекте
- Если код делится на папки, он обычно делится на соответствующие библиотеки.
Интересно, есть ли какая-то "лучшая практика", от которой я отклоняюсь, пытаясь создать эту структуру.