【发布时间】:2018-09-05 03:55:35
【问题描述】:
我想在 CMakeLists.txt 中定义一个 CMake 变量 BUILD_TIME_VAR:
- 在构建阶段使用 python 脚本计算
- 然后我可以使用 ${VAR} 访问它的内容
换句话说,构建阶段的等价物:
execute_process(COMMAND bash -c "python $SCRIPT $FILE" OUTPUT_VARIABLE GEN_TIME_VAR)
然后使用该变量生成一个文件,该文件是生成二进制文件的依赖项。
目标是使代码更易于阅读,否则计算会发生多次。
我不想调用n次python脚本来计算BUILD_TIME_VAR,我想使用一次脚本,以这种方式分解代码:
if(expression_1)
add_custom_command(OUTPUT foo
COMMAND cmd_1(${BUILD_TIME_VAR}))
...
elseif(expression_2)
# elseif section.
add_custom_command(OUTPUT foo
COMMAND cmd_2(${BUILD_TIME_VAR}))
...
else(expression_n)
# else section.
add_custom_command(OUTPUT foo
COMMAND cmd_n(${BUILD_TIME_VAR}))
...
endif(expression)
add_custom_target(${BINARY} ALL
DEPENDS foo)
感谢您的帮助。
【问题讨论】:
-
我不太明白你在问什么。你能试着解释一下吗,也许用一个你想做什么和你目前正在做什么的例子?您是否尝试根据自定义目标的输出设置 CMake 变量?
-
我重新制定它。我首先尝试使用 execute_process 允许定义 OUTPUT_VARIABLE 但计算发生在生成期间,而不是在构建期间。然后我尝试使用不建议 OUTPUT_VARIABLE 的 add_custom_target 和 add_custom_command。
-
构建在 CMake 完成运行后很长时间才会发生,因此您无法直接提出您的要求。然而,它闻起来像XY problem。你能解释一下你实际上想通过这个实现什么吗?
-
所以您实际上是在尝试创建构建时变量?
-
当然,就像是一个开关,只有一个电话,我同意。正如最初提到的,目标是通过构建时间变量提高可读性。不幸的是,这似乎不可能。
标签: cmake