функция 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}. Это необходимо для возврата данных в родительскую область.