2016-12-15 29 views
6

Aşağıdaki örnekte olduğu gibi CMake'teki bir işlevden nasıl erken geri dönüş yapılır?Cmake'deki bir işlevden nasıl erken dönülür?

function do_the_thing(HAS_PROPERTY_A) 
    # don't do things that have property A when property A is disabled globally 
    if (PROPERTY_A_DISABLED AND HAS_PROPERTY_A) 
     # What do you put here to return? 
    endif() 

    # do things and implement magic 
endfunction() 

cevap

5

Sen ne zaman bir fonksiyonu olarak adlandırılan eğer bir işlevinden döner return() (CKağıt manuel sayfa here) kullanın.

Örneğin

: içinde

cmake_minimum_required(VERSION 3.0) 
project(returntest) 

# note: your function syntax was wrong - the function name goes 
# after the parenthesis 
function (do_the_thing HAS_PROPERTY_A) 

    if (HAS_PROPERTY_A) 
     message(STATUS "Early Return") 
     return() 
    endif() 

    message(STATUS "Later Return") 
endfunction() 


do_the_thing(TRUE) 
do_the_thing(FALSE) 

Sonuçlar:

$ cmake ../returntest 
-- Early Return 
-- Later Return 
-- Configuring done 
... 

O da, dış fonksiyonlar çalışır: Bir include() ed dosyasından diyoruz, o Araman, includer döner add_subdirectory() aracılığıyla bir dosyadan geliyorsa, sizi ana dosyaya döndürür.

+3

* double facepalm * –

İlgili konular