COMPILE_DEFINITIONS
Добавлено в версии 4.4.
Определения препроцессора для компиляции исходного файла.
Свойству COMPILE_DEFINITIONS можно задать список определений препроцессора, разделённых точкой с запятой, используя синтаксис VAR или VAR=value. Определения в стиле функций не поддерживаются. CMake автоматически экранирует значение надлежащим образом для нативной системы сборки (обратите внимание, что для указания некоторых значений синтаксис языка CMake может требовать экранирования).
CMake автоматически удаляет некоторые определения, не поддерживаемые нативным средством сборки. Xcode не поддерживает определения для отдельных конфигураций в исходных файлах.
Отказ от ответственности: большинство нативных средств сборки плохо поддерживают экранирование некоторых значений. CMake предлагает обходные решения для многих случаев, но некоторые значения может быть просто невозможно передать корректно. Если кажется, что значение экранируется неправильно, не пытайтесь обойти проблему, добавляя в значение управляющие последовательности. В будущей версии 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_OPTIONS, чтобы передать дополнительные флаги компиляции. - Используйте
INCLUDE_DIRECTORIES, чтобы передать дополнительные каталоги включаемых файлов.
Связанные команды:
-
add_compile_definitions()для настроек на уровне каталога -
target_compile_definitions()для настроек конкретной цели -
set_source_files_properties()для настроек конкретного исходного файла
© 2000–2026 Kitware, Inc. and Contributors
Licensed under the BSD 3-clause License.
https://cmake.org/cmake/help/latest/prop_fs/COMPILE_DEFINITIONS.html