我在cmake中使用了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()命令,一切都显示得很完美,但在解析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-报头~/散射文件
它执行并给出预期的结果。
发布于 2015-01-20 12:36:03
问题是,您正在尝试执行一个名为"arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv“的程序。注意execute_process()的语法
COMMAND <cmd1> [args1...]为了使它更清楚,文件实际上可以写成:
COMMAND cmd1 [arg1 [arg1 ...]]CMake期望命令名作为一个CMake参数,而每个命令行参数作为另一个单独的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)https://stackoverflow.com/questions/28044679
复制相似问题