2015-09-04 3 views
2

Я хотел бы, чтобы обнаружить текущий язык проекта, например, если у меня есть что-то вроде этого:Определить язык проекта в CMake

cmake_minimum_required (VERSION 3.0) 
project (foo VERSION 1.0 LANGUAGES CXX) 

мне нужно что-то вроде этого

if (project_lang EQUAL "CXX") 
    # do something for c++ 
endif() 

Спасибо!

ответ

2

Вы можете использовать global propertyENABLED_LANGUAGES:

get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES) 
message("languages: ${languages}") 

для project(Foo), то есть значения по умолчанию:

languages: C;CXX;RC 

для project(Foo LANGUAGES CXX), т.е. C++ проекта:

languages: CXX;RC 

для project(Foo LANGUAGES C), т.е. C профессионал ект:

languages: C;RC 

т.д.

Лучшая команда, чтобы проверить, что точный язык включен в if(... IN_LIST ...) (доступен с CMake 3.3):

if("CXX" IN_LIST languages) 
    message("C++ enabled") 
endif() 
+1

Просто хотел бы добавить условное выражение: 'если ("$ {languages}" MATCHES "CXX") '. Если @Joel хочет проверить что-то вроде 'C', я думаю, что требуется более сложное регулярное выражение или дополнительный вызов' list (FIND ...) '. – Florian

+0

Спасибо, как за помощь. – Joel

+0

@ruslo Спасибо, я не знал этого. – Florian

Смежные вопросы