什么" env TEXINPUTS = ..."意思?

时间:2014-09-13 23:55:06

标签: cmake tex

我正在使用许多测试解析项目。我正在解析CMakeLists.txt文件。基本上在下游 add_test()构造的第二行:

add_test(test_tex_${_tex_file_name}
     env TEXINPUTS=${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}/test_tex
     ${TEX_EXECUTABLE} ${TEXPP_EXECUTABLE} ${_tex_file})
set_property(TEST test_tex_${_tex_file_name} PROPERTY TIMEOUT 30)

此程序与TeX有关系。所以我不理解第二行的含义

env TEXINPUTS=...

拜托,有人可以解释一下这意味着什么。这对我很有帮助。

1 个答案:

答案 0 :(得分:1)

env命令用于控制环境。没有参数,它只是打印当前环境。使用-i选项,它取消所有现有环境,添加env参数中指定的任何内容。如果没有-i选项和一些VAR=value参数,加上一个命令(带有可选参数),则运行该命令时会将环境变量添加到或覆盖环境。 (如果没有命令但有环境变量,则打印环境并设置额外的变量。)

一般理论如此之多。在这个问题中,你有:

add_test(test_tex_${_tex_file_name}
     env TEXINPUTS=${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}/test_tex
     ${TEX_EXECUTABLE} ${TEXPP_EXECUTABLE} ${_tex_file})

除非那些行被扁平化为一行,否则env什么都不做。直截了当地说,如果env TEXINPUTS=${CMAKE_CURRENT_SOURCE_DIR}没有做太多,除非${CMAKE_CURRENT_SOURCE_DIR}的值有空格。它将打印环境,并将额外变量TEXINPUTS设置为${CMAKE_CURRENT_SOURCE_DIR}的值。如果行被展平,那么test_tex命令将运行一些额外的参数,并且TEXINPUTS设置为该值。