Чи є спосіб встановити змінну у сценарії CMake на вихід команди оболонки? Щось подібне SET(FOO COMMAND "echo bar")
прийшло б мені на думку
Відповіді:
Вам потрібна execute_process
команда.
У вашому випадку у Windows:
execute_process(COMMAND CMD /c echo bar OUTPUT_VARIABLE FOO)
або на Linux, просто:
execute_process(COMMAND echo bar OUTPUT_VARIABLE FOO)
У цьому конкретному випадку CMake пропонує крос-платформне рішення. CMake може сам використовуватися для запуску команд, які можуть бути використані у всіх системах, одна з яких - echo
. Для цього CMake слід передати аргумент командного рядка -E
. Щоб отримати повний список таких команд, запустітьcmake -E help
Усередині сценарію CMake на виконуваний файл CMake посилається ${CMAKE_COMMAND}
, тому сценарію потрібно виконати:
execute_process(COMMAND ${CMAKE_COMMAND} -E echo bar OUTPUT_VARIABLE FOO)
OUTPUT_STRIP_TRAILING_WHITESPACE
більш-менш потрібно ІМО
COMMAND bash "-c" "your_complex.sh | command && stuff"
. Кредит: stackoverflow.com/a/35695350/5470596