셸 명령의 결과로 CMake 변수를 초기화하는 방법


80

CMake 스크립트의 변수를 셸 명령의 출력으로 설정하는 방법이 있습니까? SET(FOO COMMAND "echo bar")생각 나는 것과 같은

답변:


84

당신은 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에 명령 줄 arg를 전달해야합니다 -E. 이러한 명령의 전체 목록을 보려면 다음을 실행하십시오.cmake -E help

CMake 스크립트 내에서 CMake 실행 파일은에서 참조 ${CMAKE_COMMAND}하므로 스크립트는 다음을 수행해야합니다.

execute_process(COMMAND ${CMAKE_COMMAND} -E echo bar OUTPUT_VARIABLE FOO)

12
실행하는 명령에 따라 후행 공백을 변수에 설정할 수 있습니다. 이 동작이 바람직하지 않은 경우 OUTPUT_STRIP_TRAILING_WHITESPACE 옵션을 'execute_process'함수에 대한 마지막 인수로 사용할 수 있습니다.
hbobenicio

3
@hbobenicio OUTPUT_STRIP_TRAILING_WHITESPACE는 다소 필요합니다 IMO
Trevor Boyd Smith

4
명령이 단순한 프로그램 호출 이상이면 COMMAND bash "-c" "your_complex.sh | command && stuff". 크레딧 : stackoverflow.com/a/35695350/5470596
YSC
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.