Мне не удалось найти список возможных значений для переменной 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()
следующее:
ASM
ASM-ATT
ASM-MASM
ASM-NASM
C
CSharp
CUDA
CXX
Fortran
Java
OBJC
(Цель C)OBJCXX
(Цель C++)RC
(компилятор ресурсов Windows)Swift
Оценивается с помощью CMake версии 3.16
Ссылки