文件名前的@符号
Posted
技术标签:
【中文标题】文件名前的@符号【英文标题】:@ symbol in front of a file name 【发布时间】:2013-12-20 18:49:31 【问题描述】:我有一个包含以下内容的 makefile(用于 nmake)。
w = \
abort_.obj \
backspac.obj \
c_abs.obj \
c_cos.obj \
c_div.obj \
c_exp.obj \
c_log.obj \
c_sin.obj \
c_sqrt.obj \
cabs.obj \
close.obj \
d_abs.obj \
d_acos.obj \
d_asin.obj \
d_atan.obj \
d_atn2.obj \
d_cnjg.obj \
d_cos.obj \
d_cosh.obj \
d_dim.obj \
d_exp.obj \
d_imag.obj \
d_int.obj \
d_lg10.obj \
d_log.obj \
d_mod.obj \
d_nint.obj \
d_prod.obj \
d_sign.obj \
d_sin.obj \
d_sinh.obj \
d_sqrt.obj \
d_tan.obj \
d_tanh.obj \
derf_.obj \
derfc_.obj \
dfe.obj \
dolio.obj \
dtime_.obj \
due.obj \
ef1asc_.obj \
ef1cmc_.obj \
endfile.obj \
erf_.obj \
erfc_.obj \
err.obj \
etime_.obj \
exit_.obj \
f77_aloc.obj \
f77vers.obj \
fmt.obj \
fmtlib.obj \
ftell_.obj \
getarg_.obj \
getenv_.obj \
h_abs.obj \
h_dim.obj \
h_dnnt.obj \
h_indx.obj \
h_len.obj \
h_mod.obj \
h_nint.obj \
h_sign.obj \
hl_ge.obj \
hl_gt.obj \
hl_le.obj \
hl_lt.obj \
i77vers.obj \
i_abs.obj \
i_dim.obj \
i_dnnt.obj \
i_indx.obj \
i_len.obj \
i_mod.obj \
i_nint.obj \
i_sign.obj \
iargc_.obj \
iio.obj \
ilnw.obj \
inquire.obj \
l_ge.obj \
l_gt.obj \
l_le.obj \
l_lt.obj \
lbitbits.obj \
lbitshft.obj \
lread.obj \
lwrite.obj \
main.obj \
open.obj \
pow_ci.obj \
pow_dd.obj \
pow_di.obj \
pow_hh.obj \
pow_ii.obj \
pow_ri.obj \
pow_zi.obj \
pow_zz.obj \
r_abs.obj \
r_acos.obj \
r_asin.obj \
r_atan.obj \
r_atn2.obj \
r_cnjg.obj \
r_cos.obj \
r_cosh.obj \
r_dim.obj \
r_exp.obj \
r_imag.obj \
r_int.obj \
r_lg10.obj \
r_log.obj \
r_mod.obj \
r_nint.obj \
r_sign.obj \
r_sin.obj \
r_sinh.obj \
r_sqrt.obj \
r_tan.obj \
r_tanh.obj \
rdfmt.obj \
rewind.obj \
rsfe.obj \
rsli.obj \
rsne.obj \
s_cat.obj \
s_cmp.obj \
s_copy.obj \
s_paus.obj \
s_rnge.obj \
s_stop.obj \
sfe.obj \
sig_die.obj \
signal_.obj \
sue.obj \
system_.obj \
typesize.obj \
uio.obj \
uninit.obj \
util.obj \
wref.obj \
wrtfmt.obj \
wsfe.obj \
wsle.obj \
wsne.obj \
xwsne.obj \
z_abs.obj \
z_cos.obj \
z_div.obj \
z_exp.obj \
z_log.obj \
z_sin.obj \
z_sqrt.obj
-----------截图---------------
vcf2c.lib: $w
lib -out:vcf2c.lib @libf2c.lbc
“libf2c.lbc”前面的@ 有什么作用?在批处理文件中 @ 抑制输出,但我不知道它是如何应用的。
【问题讨论】:
【参考方案1】:It's a LIB command file. 如我链接的页面所述:
您可以使用命令文件将命令行参数传递给 LIB 以下语法:
LIB @commandfile
文件命令文件是一个文本文件。不允许有空格或制表符 在 at 符号 (@) 和文件名之间。没有默认值 延期;您必须指定完整的文件名,包括任何 延期。不能使用通配符。您可以指定绝对值或 文件名的相对路径。
在命令文件中,参数可以用空格或制表符分隔,如 他们可以在命令行上;它们也可以用换行符分隔 人物。使用分号 (;) 标记注释。 LIB 忽略所有 从分号到行尾的文本。
您可以在命令中指定全部或部分命令行 文件,并且您可以在 LIB 命令中使用多个命令文件。锂电池 接受命令文件输入,就好像它在其中指定一样 命令行中的位置。命令文件不能嵌套。锂电池 回显命令文件的内容,除非 /NOLOGO 选项是 用过。
【讨论】:
【参考方案2】:在某些系统上(但不是在任何系统上普遍支持)的一个通用约定是,前面有 @
的文件名意味着程序应该读取文件的内容并将内容解释为程序的参数。
因此,在您的情况下,lib
程序将读取文件 libf2c.lbc
并将其内容用作参数。
我猜这可能是nmake
的一个特性,我对nmake
了解不多。它当然不是任何“传统”制作程序的一部分。
【讨论】:
以上是关于文件名前的@符号的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 £ 符号前的特殊字符 - 399 英镑 - Spring Boot json