@符号在文件名前面

时间:2013-12-20 18:49:31

标签: batch-file makefile nmake

我有一个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”是做什么的?在批处理文件中@抑制输出,但我不知道它是如何适用的。

2 个答案:

答案 0 :(得分:3)

It's a LIB command file.如我链接的页面所述:

  

您可以使用命令行将命令行参数传递给命令文件中的LIB   语法如下:

     

LIB @commandfile

     

文件命令文件是文本文件。不允许使用空格或标签   at符号(@)和文件名之间。没有默认值   延期;您必须指定完整的文件名,包括任何文件名   延期。不能使用通配符。您可以指定绝对值或   带文件名的相对路径。

     

在命令文件中,参数可以用空格或制表符分隔,如   他们可以在命令行上;它们也可以用换行符分隔   字符。使用分号(;)标记注释。 LIB忽略了所有   从分号到行尾的文本。

     

您可以在命令中指定全部或部分命令行   文件,您可以在LIB命令中使用多个命令文件。 LIB   接受命令文件输入,就像在其中指定一样   命令行上的位置。命令文件不能嵌套。 LIB   除非/ NOLOGO选项是,否则回显命令文件的内容   使用

答案 1 :(得分:0)

某些系统上的常见约定(但在任何系统上都不普遍支持),文件名前面带有@意味着程序应该读取文件的内容并将内容解释为程序的参数

因此,在您的情况下,lib程序将读入文件libf2c.lbc并将其内容用作参数。

我想这可能是nmake的一个功能,我对nmake了解不多。它肯定不是任何“传统”制作计划的一部分。