Мне не удалось найти список возможных значений для переменной LANGUAGE на сайте CMAKE.org или где-либо еще. Кто-нибудь, пожалуйста, перечислит значения, которые признает CMAKE? Мне нужно указать Objective С++.
Каковы возможные значения для переменной LANGUAGE в CMAKE
Ответ 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() следующее:
ASMASM-ATTASM-MASMASM-NASMCCSharpCUDACXXFortranJavaOBJC(Цель C)OBJCXX(Цель C++)RC(компилятор ресурсов Windows)Swift
Оценивается с помощью CMake версии 3.16
Ссылки