Додає опції компілювання до цілі.
Сигнатура
target_compile_options(<target> [BEFORE] <INTERFACE|PUBLIC|PRIVATE> [items1...] [<INTERFACE|PUBLIC|PRIVATE> [items2...] ...])
Опис
Додає опції до цільових властивостей COMPILE_OPTIONS або INTERFACE_COMPILE_OPTIONS. Дані опції використовуються під час компілювання вказаної цілі <target>, яка повинна бути створеною за допомогою команд на подобі add_executable() або add_library() і не повинна бути псевдонімом цілі.
Зверніть увагу. Дані властивості не використовуються під час стадії компонування цілі. Детальніше у документації по команді target_link_options().
Аргументи
Якщо вказаний параметр BEFORE, прапорці компілювання будуть вставлені в початок до відповідної властивості замість додавання у кінець списку прапорців. Детальніше у документі про політику CMP0101, яка впливає на те чи аргумент BEFORE буде ігноруватись у певних випадках.
Ключові слова INTERFACE, PUBLIC і PRIVATE вимагаються для вказування області видимості наступних аргументів. Елементи, які позначені PRIVATE і PUBLIC будуть передаватись у якості властивості COMPILE_OPTIONS цілі <target>. Елементи, котрі позначені PUBLIC і INTERFACE будуть передаватись у властивості INTERFACE_COMPILE_OPTIONS цілі <target>. Наступні аргумент вказують прапорці компілювання. Повторювані виклики даної команди для однієї і тієї ж цілі <target> буде призводити до акумуляції усіх вказаних прапорців компіляції у порядку виклику команди.
Нововведення у версії 3.11: Елементи INTERFACE дозволені для імпортованих цілей
Аргументи до команди target_compile_options можуть використовувати генеруючі вирази які використовують синтаксис $<...>. Детальніше про наявні виразу у документації по cmake-generator-expressions(7). Детальніше про визначення властивостей системи побудови у документі cmake-buildsystem(7).
Запобігання дублюванню параметрів
Фінальний набір параметрів компілювання для цілі конструюється акумулюванням параметрів з поточної цілі і вимоги використання залежностей. Забираються дубльовані прапорці з їхнього набору для запобігання повторенню.
Нововведення у версії 3.12: Поки вигідне для окремих прапорців, крок видалення дублювань може розбити групування опцій. Наприклад, -option A -option B перетворюється на -option A B. Система може вказати групу опцій компілювання використовуючи обгортання лапками у стилі командної оболонки разом з префіксом SHELL:. Даний префік видаляється, і остальний рядок опцій інтерпретується використовуючи команду separate_arguments() у режимі UNIX_COMMAND. Наприклад, "SHELL:-option A" "SHELL:-option B" перетворюється на -option A -option B.
Переглянь також
Дана команда може використовуватись для додавання будь-яких прапорців компілювання. Однак, для додавання визначень препроцессора і директорій пошуку заголовкових файлів рекомендується використовувати більш підходящі для цього команди на подобі target_compile_definitions() і target_include_directories().
Щоб поширити налаштування на усю директорію існує команда add_compile_options().
Для встановлення налаштувань для певного файлу існує властивість файлу джерельного коду COMPILE_OPTIONS.
Дана команда додає прапорці компілювання для усіх мов і цілі. Рекомендується використання генеруючого виразу LANGUAGE для вказування прапорців компілювання для кожної мови окремо.
target_compile_features(), target_link_libraries(), target_link_directories(), target_link_options(), target_precompile_headers(), target_sources().
Змінні CMAKE_<LANG>_FLAGS і CMAKE_<LANG>_FLAGS_<CONFIG> додають прапорці компілювання специфічні для мови, які передаються до усіх викликів компілятора. Включно з викликами які виконують компілювання і компонування.
Оригінал
Оригінал документу розміщений за адресою https://cmake.org/cmake/help/latest/command/target_compile_options.html#command:target_compile_options