我正在使用许多测试解析项目。我正在解析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=...
拜托,有人可以解释一下这意味着什么。这对我很有帮助。
答案 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
设置为该值。