функция cmake, параметр и возврат
Я хотел бы создать функцию cmake как:
function(test src_list dst_list)
# do something
endfunction()
Применение:
test(${my_list} chg_list)
Это означает, что my_list - это список с несколькими полями, а chg_list получит список, измененный внутри тестовой функции.
Но он не работает, как я могу создать функцию в cmake для этого?
Ответы
Ответ 1
В CMake функции имеют свою собственную область действия, и по умолчанию всякая модификация переменных является локальной, если вы не передадите CACHE
или PARENT_SCOPE
качестве параметра для set
. Внутри функции, если вы хотите изменить переменную в области вызывающего, вы должны использовать:
set(${dst_list} <something> PARENT_SCOPE)
См. Документацию:
Функция открывает новую область: см. Set (var PARENT_SCOPE) для деталей.
Ответ 2
Убедитесь, что внутри установленной вами функции set()
не dst_list
а ${dst_list}
. Это необходимо для возврата данных в родительскую область.