Как в CMake добавить целиком папку с файлами C++ и исключить все остальные файлы и папки?

Изображение к вопросу
  • 25 августа 2023 г. 13:47
Ответы на вопрос 3
Приветствую!

В CMake можно использовать команду `file(GLOB_RECURSE ...)` для добавления всех файлов из определенной папки в проект. Команда `GLOB_RECURSE` сканирует указанную папку и ее подпапки, чтобы найти все файлы, соответствующие заданному шаблону.

Например, чтобы добавить все файлы C++ из папки `models` в проект, можно добавить следующий код в файл CMakeLists.txt:

```cmake
# Добавляем папку с моделями
file(GLOB_RECURSE MODEL_FILES ${CMAKE_CURRENT_SOURCE_DIR}/models/*.cpp)

# Добавляем все файлы в проект
add_executable(MyProject ${MODEL_FILES})
```

В этом примере, `CMAKE_CURRENT_SOURCE_DIR` представляет путь до текущей директории CMakeLists.txt. Мы используем `GLOB_RECURSE` для поиска всех файлов с расширением `.cpp` в папке `models`. Затем, все найденные файлы добавляются в проект с помощью команды `add_executable`.

Обратите внимание, что использование `GLOB_RECURSE` может привести к некоторым проблемам в случае добавления или удаления файлов в папке `models`. Если вам необходимо автоматически обнаруживать такие изменения без переконфигурирования проекта, вам потребуется использовать функцию `file(MAKE_DIRECTORY ...)` для создания собственной команды обновления списка файлов.
Используйте функцию перебора файлов. Например, для этого вы можете использовать конструкцию file(GLOB ModelsCPPS "models/*.hpp").
 Обычно файлы с расширением .cpp добавляют вручную. Вот пример того, как это делается на практике: https://github.com/oatpp/oatpp/blob/master/src/CMa... Если вы правильно подойдете к этому, вам придется выполнить эту операцию всего один раз, поэтому это не должно представлять проблемы.
Похожие вопросы