首页 > 解决方案 > 如何在cmake表达式中添加和乘以实数

问题描述

我正在对 cmake 中的浮动变量进行以下操作。

我阅读了较早的堆栈溢出 cmake 帖子并修改了我的代码以执行以下表达式。但我没有得到预期的结果:

结果:

### RESULT 30
### A 20.0

预期成绩:

### RESULT 30.0
### A 20.0

制作

set(A 20.0)
set(B 80.0)

set(loop 1 ) #0 1 2 3 4 5)

function(ARTH_OPER expr output)
    execute_process(COMMAND awk "BEGIN {print ${expr}}" OUTPUT_VARIABLE __output)
    set(${output} ${__output} PARENT_SCOPE)
endfunction()

foreach(loop_val ${loop})

   ARTH_OPER("${A} + ${loop_val} * 10" RESULT)
   message("### RESULT ${RESULT}")
   message("### A ${A}")

endforeach(loop_val)

我怎样才能得到预期的结果。

标签: cmake

解决方案


您可以使用awk'printf函数并使用%f格式字符串来打印浮点数并.1使用一位小数进行打印。结合起来变成%.1f

execute_process(COMMAND awk "BEGIN {printf(\"%.1f\", ${expr})}" OUTPUT_VARIABLE __output)

推荐阅读