У меня есть проект C ++, где все исходные файлы реализации (* .cpp) находятся в каталоге src в каталоге проекта.Некоторые файлы находятся в следующих подкаталогах.Допустим, в src / foo / есть 50 файлов.Мне нужно перечислить эти файлы как часть функции add_library
и / или target_sources
.
Теперь, куда бы вы ни смотрели, добавление всех файлов из каталога автоматически не приветствуется, что меня устраивает.Итак, я собираюсь перечислить все файлы вручную;но повторение общего префикса src / foo / 50 раз кажется действительно глупым и раздражающим.
В документации для target_sources говорится
Относительные пути к исходным файлам интерпретируются как относящиеся к текущему исходному каталогу (то есть CMAKE_CURRENT_SOURCE_DIR).
Итак, я добавил set(CMAKE_CURRENT_SOURCE_DIR "src/foo/")
перед вызовом target_source
, но это не сработало.(Я получаю сообщение об ошибке «Не удается найти исходный файл».)
Итак, как правильно достичь желаемого, если это вообще возможно?
NB: (общедоступные) заголовочные файлы(* .hpp) проекта находится в каталоге include (за пределами src ).Это хорошо настроено (без необходимости перечисления отдельных файлов) с помощью функции target_include_directories
.