Search code examples
cmake

Detect project language in cmake


I'd like to detect the current project language, for example if I have something like this:

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

I need something like this

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

Thanks!


Solution

  • You can use global property ENABLED_LANGUAGES:

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

    for project(Foo), i.e. default values:

    languages: C;CXX;RC
    

    for project(Foo LANGUAGES CXX), i.e. C++ project:

    languages: CXX;RC
    

    for project(Foo LANGUAGES C), i.e. C project:

    languages: C;RC
    

    etc.

    The best command to check that the exact language is enabled is if(... IN_LIST ...) (available since CMake 3.3):

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