Каковы возможные значения для переменной LANGUAGE в CMAKE

Мне не удалось найти список возможных значений для переменной LANGUAGE на сайте CMAKE.org или где-либо еще. Кто-нибудь, пожалуйста, перечислит значения, которые признает CMAKE? Мне нужно указать Objective С++.

Ответ 1

Обновление для CMake 3.16 и более поздних версий: CMake добавил встроенную поддержку Objective-C в версии 3.16. Соответствующими языковыми строками являются OBJC и OBJCXX. Спасибо квадратным заголовкам за указание на это.

Оригинальный ответ: поддержка языков зависит от платформы.

В настоящее время CMake поддерживает C, CXX и Fortran "из коробки" на большинстве платформ. Также есть поддержка определенных Ассемблеров на некоторых платформах. Полный список можно найти в содержимом папки Modules/Platform.

Идея состоит в том, что язык, указанный в поле LANGUAGE команды project или команды enable_language, является просто строкой, которая затем будет использоваться CMake вместе с зависимыми от языка переменными для настроить систему сборки. Скрипты платформы, поставляемые с CMake, выполняют эту настройку для C и C++. Теоретически, можно добавить собственный язык, просто установив правильные переменные (хотя это довольно сложно, и я не знаю никого, кто когда-либо успешно делал это).

Что касается добавления поддержки Objective-C: поскольку большинство наборов инструментов используют один и тот же компилятор для C и Objective-C, вам не нужно настраивать новый язык. Просто скомпилируйте ваш код, как если бы он был простым C, и добавьте соответствующие флаги компилятора для поддержки Objective-C.

К сожалению, это не очень удобно для использования и может легко сломаться в angular случаях. Но до тех пор, пока CMake не добавит явную поддержку Objective-C в качестве языка первого класса, я боюсь, что это так же хорошо, как и получается.

Ответ 2

Просто взгляните на все скрипты CMakeDetermine<Language>Compiler.cmake, с которыми поставляется CMake.

В результате в алфавитном порядке вы можете добавить в вызов enable_language() следующее:

  1. ASM
  2. ASM-ATT
  3. ASM-MASM
  4. ASM-NASM
  5. C
  6. CSharp
  7. CUDA
  8. CXX
  9. Fortran
  10. Java
  11. OBJC (Цель C)
  12. OBJCXX (Цель C++)
  13. RC (компилятор ресурсов Windows)
  14. Swift

Оценивается с помощью CMake версии 3.16

Ссылки