Додає опції компілювання до цілі.

Сигнатура

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