2015-01-20 6 views
5

cmakeexecute_process() 함수를 사용하고 있습니다. 이 cmake를 구문 분석하는 동안 실행될 때cmake 파일의 execute_process 명령에서 cmake 변수 사용

message(" FLAGS = ${FLAGS}") 
message(" SCATTERFILE = ${SCATTERFILE}") 
set (EXECUTE_COMMAND "arm-none-eabi-gcc ${FLAGS} -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld") 
message("EXECUTE_COMMAND = ${EXECUTE_COMMAND}") 
execute_process(COMMAND ${EXECUTE_COMMAND} RESULT_VARIABLE rv) 

모든 것은 message() 명령의 결과로 완벽하게 표시하지만 오류가 발생합니다. 나는 FLAGS 변수가 파싱하는 동안 예상대로 확장되지 않는다고 생각한다. 터미널에서 message 명령의 결과로 표시되는 동일한 EXECUTE_COMMAND을 실행하면 완벽하게 실행됩니다. 무슨 문제가 될 수 있니?

편집 : 내가 출력은

set (EXECUTE_COMMAND "arm-none-eabi-gcc -E -P -x c-header ${SCATTERFILE} ") 

을 사용하고 지금

set (EXECUTE_COMMAND "arm-none-eabi-gcc ${FLAGS} -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld")` 

에서 ${FLAGS}을 제거한 :

EXECUTE_COMMAND arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv: No such File or directory. 

단순히 터미널에서이 명령을 입력하면 ,

아암 그럼에도 EABI -E-GCC -P -x C 헤더 ~/scatterFile.scatter가 실행하고, 예상 결과를 제공

.

+0

오류를 신고하는 사람은 누구입니까? CMake 또는 실행 된 프로세스? CMake의 출력을 제공하십시오 –

+0

실행 된 프로세스 – theadnangondal

+0

CMake 출력의 관련 부분을 제공하십시오 ('MESSAGE' 출력 및 오류 메시지 포함) –

답변

9

문제는 "arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv"이라는 프로그램을 실행하려고하는 것입니다.

COMMAND cmd1 [arg1 [arg1 ...]] 

CMake 한 CMake 인수 및 각 명령 줄 인수로 명령 이름 기대 : execute_process()의 구문주의 :로

COMMAND <cmd1> [args1...] 

가도 명확하게하기를의 documentatin 실제로 쓸 수 또 다른 별도의 CMake 인수. 그러나 모든 것을 따옴표로 묶으므로 CMake 인수 (공백이 많이 포함)로 바뀝니다. 다음과 같이 코드를 변경하십시오.

set (EXECUTE_COMMAND arm-none-eabi-gcc ${FLAGS} -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld) 

execute_process(COMMAND ${EXECUTE_COMMAND} RESULT_VARIABLE rv) 
+0

따옴표를 제거한 후 공백 대신 세미콜론을 넣습니다. ** arm-none-eabi-gcc; -E; -P; -x; c-header; ~/scatterFile.scatter ** 완전히 쓸모가 없습니다 – theadnangondal

+0

@theadnangondal 세미콜론은 어디에 있습니까? 'message()'출력 또는 실제 명령 행에서 실행됩니까? 그것들은 매우 다른 것들입니다. – Angew

+0

** message() ** 출력도 있지만 명령 줄 실행시 오류가 있습니다. ** 파일을 찾을 수 없습니다 ** 및 ** - x c-header는 마지막 파일 이후 아무런 영향을 미치지 않습니다 ** – theadnangondal