2015-09-04 2 views
2

Je voudrais détecter la langue du projet en cours, par exemple, si j'ai quelque chose comme ceci:Détecter la langue du projet dans CMake

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

je besoin de quelque chose comme ça

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

Merci!

Répondre

2

Vous pouvez utiliser global propertyENABLED_LANGUAGES:

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

pour project(Foo), à savoir les valeurs par défaut:

languages: C;CXX;RC 

pour project(Foo LANGUAGES CXX), à savoir le projet C++:

languages: CXX;RC 

pour project(Foo LANGUAGES C), à savoir C pro Ject:

languages: C;RC 

etc.

La meilleure commande pour vérifier que la langue exacte est activée est if(... IN_LIST ...) (disponible depuis CMake 3.3):

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

Je voulais juste ajouter l'expression conditionnelle: 'si ("$ {languages}" MATCHES "CXX") '. Si @Joel veut vérifier quelque chose comme 'C', je pense qu'une regex plus sophistiquée ou un appel' list (FIND ...) 'supplémentaire est nécessaire. – Florian

+0

Merci, à la fois pour l'aide. – Joel

+0

@ruslo Merci, je ne connaissais pas celui-là. – Florian