首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在cmake文件中使用execute_process命令中的cmake变量

在cmake文件中使用execute_process命令中的cmake变量
EN

Stack Overflow用户
提问于 2015-01-20 11:51:47
回答 1查看 16.6K关注 0票数 8

我在cmake中使用了cmake函数。

代码语言:javascript
复制
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}

代码语言:javascript
复制
set ( EXECUTE_COMMAND "arm-none-eabi-gcc ${FLAGS}  -E -P -x c-header ${SCATTERFILE} -o ~/ttt.ld" )`

现在我用

代码语言:javascript
复制
set ( EXECUTE_COMMAND "arm-none-eabi-gcc   -E -P -x c-header ${SCATTERFILE} " )

产出如下:

代码语言:javascript
复制
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-报头~/散射文件

它执行并给出预期的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-20 12:36:03

问题是,您正在尝试执行一个名为"arm-none-eabi-gcc -E -P -x c-header ~/scatterFile.scatter rv“的程序。注意execute_process()的语法

代码语言:javascript
复制
COMMAND <cmd1> [args1...]

为了使它更清楚,文件实际上可以写成:

代码语言:javascript
复制
COMMAND cmd1 [arg1 [arg1 ...]]

CMake期望命令名作为一个CMake参数,而每个命令行参数作为另一个单独的CMake参数。但是,您将所有的内容都包含在引号中,这会将其转化为一个CMake参数(包含大量空格)。更改代码如下:

代码语言:javascript
复制
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)
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28044679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档