У меня есть проект, который не был разделен на библиотеки, но источник организован в дереве каталогов. Я не знаю, как сказать cmake спуститься по каталогу, а затем добавить источник в этот каталог к проекту, определенному в родительском каталоге. Я попытался следующее:Добавить источник в подкаталог проекта cmake
в проекте/источник/CMakeLists.txt:
set(SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/unitTest/main.cpp
)
add_subdirectory("${PROJECT_SOURCE_DIR}/folder1")
add_executable(UnitTestRNG ${SOURCE} ${HEADERS})
затем в проекте/источник/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
)
используя какое-то сообщение() Я обнаружил, что дочерняя папка получит содержимое переменной SOURCE, но это новое назначение этой переменной не будет сохраняться при возвращении к родительскому CMakeLists.txt
Ищите примеры и в учебнике cmake привели меня к выводу, что: - Структуры исходных файлов обычно плоские внутри проекта - Если код разделен на папки, он обычно делится на соответствующие библиотеки.
Интересно, существует ли какая-то «лучшая практика», из которой я отклоняюсь от попытки этой структуры.
Спасибо за синтаксис! Он работал красиво. – 2NinerRomeo
Является ли это по-прежнему рекомендуемым способом достижения этой цели в последней версии cmake? – lanoxx