На данный момент, похоже, не существует какого-либо простого решения, кроме явного указания исключения вашего каталога. Поведение не является новым для версии 3.14.0 и было аналогичным в 3.11.1. Тот факт, что ваш каталог .git не был скопирован, может быть вызван другой командой в ваших CMakeLists ...
Как вы предлагаете и основываясь на этой записи и этой теме на старом форуме CMake, решение для вас будет:
install(DIRECTORY ./ DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN ".git*" EXCLUDE)
Существует тикет для добавления функции, которая не включает пустые каталоги при использовании install(DIRECTORY ...)
, так что вы можете следить за ней, когда она наконец будет реализована.
В качестве альтернативы, вы можете использовать вложенный file(GLOB ...)
, за которым следует install(FILES ...)
, с присущими ему недостатками глобализации (см. примечание в документации).