Spec-Zone.ru › CMake

COMPILE_DEFINITIONS

Определения препроцессора для компиляции исходного файла.

Свойству COMPILE_DEFINITIONS можно задать список определений препроцессора, разделённых точками с запятой, используя синтаксис VAR или VAR=value. Определения в стиле функций не поддерживаются. CMake автоматически экранирует значение в соответствии с требованиями используемой системы сборки (обратите внимание, что синтаксис языка CMake может требовать экранирования для указания некоторых значений). Это свойство можно задавать отдельно для каждой конфигурации, используя имя COMPILE_DEFINITIONS_<CONFIG>, где <CONFIG> — имя в верхнем регистре (например, COMPILE_DEFINITIONS_DEBUG).

CMake автоматически удаляет некоторые определения, не поддерживаемые используемым инструментом сборки. Xcode не поддерживает определения для разных конфигураций в исходных файлах.

Добавлено в версии 3.26: Все начальные -D в элементе будут удалены.

Отказ от ответственности: большинство используемых инструментов сборки плохо поддерживают экранирование некоторых значений. В CMake предусмотрены обходные решения для многих случаев, однако некоторые значения может быть невозможно передать корректно. Если значение экранируется неправильно, не пытайтесь обойти проблему, добавляя в него escape-последовательности. Такое решение может перестать работать в будущей версии CMake с улучшенной поддержкой экранирования. Вместо этого рассмотрите возможность определения макроса в (сконфигурированном) заголовочном файле. Затем сообщите об ограничении. К известным ограничениям относятся:

#

Практически повсеместно работает некорректно.

;

Некорректно работает в VS IDE 7.0 и Borland Makefiles.

,

Некорректно работает в VS IDE.

%

В некоторых случаях некорректно работает в NMake.

& |

В некоторых случаях некорректно работает в MinGW.

^ < > \ "

В большинстве инструментов Make в Windows работает некорректно.

CMake не отклоняет такие значения безоговорочно, поскольку в некоторых случаях они работают. Используйте их с осторожностью.

В значениях COMPILE_DEFINITIONS можно использовать cmake-generator-expressions(7) с синтаксисом $<...>. Доступные выражения описаны в справочнике по cmake-generator-expressions(7). Однако Xcode не поддерживает настройки для разных конфигураций и исходных файлов, поэтому в этом генераторе нельзя использовать выражения, зависящие от конфигурации сборки.

Предпочтительно использовать генераторные выражения в COMPILE_DEFINITIONS вместо устаревшего свойства COMPILE_DEFINITIONS_<CONFIG>.

© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_sf/COMPILE_DEFINITIONS.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API