【发布时间】:2015-01-20 11:51:47
【问题描述】:
我在cmake 中使用execute_process() 函数。
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() 命令,所有内容都完美显示,但在解析cmake 时运行它会导致错误。我认为 FLAGS 变量在解析时没有按预期扩展。当我运行相同的EXECUTE_COMMAND 时,它会在终端中作为message 命令的结果显示,它运行完美。可能是什么问题?
编辑: 我已经从
中删除了${FLAGS}
set ( EXECUTE_COMMAND "arm-none-eabi-gcc ${FLAGS} -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld" )`
现在我正在使用
set ( EXECUTE_COMMAND "arm-none-eabi-gcc -E -P -x c-header ${SCATTERFILE} " )
输出是:
EXECUTE_COMMAND arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv: No such File or directory.
如果我只是在终端上输入这个命令,
arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter
它执行并给出预期的结果。
【问题讨论】:
-
谁报错? CMake还是执行的过程?请提供您的 CMake 运行的输出
-
执行过程
-
所以请提供CMake输出的相关部分(包括
MESSAGE输出和错误信息) -
波浪号由你的 shell 扩展。这不是 cmake 的有效文件名。
标签: c gcc cmake cross-platform