VERIFY_INTERFACE_HEADER_SETS
Добавлено в версии 3.24.
Изменено в версии 4.4: теперь поддерживаются языки OBJC и OBJCXX в дополнение к C и CXX.
Используется для проверки того, что все заголовочные файлы в наборах заголовочных файлов PUBLIC и INTERFACE цели можно подключить отдельно.
Изменено в версии 4.4: Ранее цель проверки создавалась, только если у цели был хотя бы один подходящий заголовочный файл. Теперь она всегда создаётся, если свойство включено.
Если для этого свойства задано значение true, а цель является объектной библиотекой, статической библиотекой, динамической библиотекой, интерфейсной библиотекой или исполняемым файлом (с учётом политики CMP0209), создаётся цель объектной библиотеки с именем <target_name>_verify_interface_header_sets. Для этой цели проверки создаётся по одному исходному файлу на каждый заголовочный файл в наборах заголовочных файлов PUBLIC и INTERFACE цели. Каждый исходный файл подключает только соответствующий ему заголовочный файл. Если у цели нет подходящих наборов заголовочных файлов, вместо этого создаётся служебная цель, чтобы имя цели всегда существовало для зависимостей системы сборки. Цель проверки связывается с исходной целью, чтобы получить все её требования использования.
Для цели проверки задаются значения true для свойств EXCLUDE_FROM_ALL и DISABLE_PRECOMPILE_HEADERS, а значения false — для свойств AUTOMOC, AUTORCC, AUTOUIC, UNITY_BUILD и CXX_SCAN_FOR_MODULES.
Если для свойства LANGUAGE заголовочного файла задано значение, оно используется для определения языка компиляции заголовочного файла. Поддерживаются языки C, CXX, OBJC и OBJCXX. Если язык не входит в этот список, заголовочный файл не компилируется.
В противном случае язык определяется по исходным файлам цели с учётом следующего приоритета: OBJCXX имеет приоритет над всеми остальными; если присутствуют исходные файлы и CXX, и OBJC, заголовочный файл компилируется как OBJCXX; в противном случае CXX имеет приоритет над OBJC, а OBJC — над C. Если подходящие исходные файлы не найдены, используется тот же порядок приоритета для глобально включённых языков. Если поддерживаемый язык не найден, заголовочный файл не компилируется.
Если для свойства SKIP_LINTING заголовочного файла задано значение true, файл не компилируется.
Если для VERIFY_INTERFACE_HEADER_SETS и VERIFY_PRIVATE_HEADER_SETS заданы значения true, заголовочные файлы из наборов файлов PUBLIC будут проверены дважды, но с разными условиями. Флаги компилятора для закрытого и интерфейсного контекстов могут различаться, из-за чего компилятор может по-разному интерпретировать содержимое заголовочного файла.
Создаётся цель верхнего уровня с именем all_verify_interface_header_sets, зависящая от всех целей проверки интерфейсов. Также создаётся цель с именем all_verify_header_sets, зависящая от all_verify_interface_header_sets и, если она существует, от all_verify_private_header_sets (см. VERIFY_PRIVATE_HEADER_SETS).
Это свойство инициализируется значением переменной CMAKE_VERIFY_INTERFACE_HEADER_SETS, если она задана при создании цели.
Если проекту нужно управлять тем, какие наборы заголовочных файлов проверяются этим свойством, можно задать INTERFACE_HEADER_SETS_TO_VERIFY.
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_tgt/VERIFY_INTERFACE_HEADER_SETS.html