【发布时间】:2020-04-06 16:17:02
【问题描述】:
我想减少下面代码中的 CMake 宏调用,并将其压缩为一个 CMake 宏调用,以使用 if-else 语句执行我的操作。
我需要通过传递不同的高度和宽度参数来运行ctest(使用 CMake)。
请将此视为一些算术运算。
在我的情况下,根据宽度,我的高度范围会像这样改变:
Width = 8 ,then height will be 8 16 24
Width = 16 ,then height will be 16 24
Width = 24 ,then height will be 24 32
那么,是否可以在 CMake 文件中使用一些 if-else 语句来对 EXECUTE_OPERATION(${width_val} ${height_val} ) 进行一次调用?
我当前的 CMake 文件如下所示:
set(width 8)
set(size 8 16 24 )
foreach(size_val ${size}
foreach(width_val ${width})
EXECUTE_OPEARTION(${width_val} ${height_val} )
endforeach(width_val)
endforeach(size_val)
---------------------------
set(width 16)
set(height 16 24 )
foreach(height_val ${height}
foreach(width_val ${width})
EXECUTE_OPEARTION(${width_val} ${height_val} )
endforeach(width_val)
endforeach(size_val)
---------------------------
set(width 24)
set(size 24 32 )
foreach(size_val ${size}
foreach(width_val ${width})
EXECUTE_OPEARTION(${width_val} ${height_val} )
endforeach(width_val)
endforeach(size_val)
---------------------------
我尝试使用以下方法执行此操作,但没有成功:
set(width 8 16 24 )
if(width == 8)
set(height 8 16 24 )
elif(width == 16)
set(height 16 24 )
elif(width == 24)
set(height 24 32)
foreach(height_val ${height}
foreach(width_val ${width})
EXECUTE_OPEARTION(${width_val} ${height_val} )
endforeach(width_val)
endforeach(size_val)
【问题讨论】: