2013-12-20 58 views
1

我有一個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」前面的@會做什麼?在批處理文件@中取消輸出,但我不明白這是如何適用的。

回答

3

It's a LIB command file.隨着網頁我聯繫上描述:

LIB @commandfile

文件commandfile:

您可以使用 以下語法通過命令行參數來LIB命令文件是一個文本文件。在符號(@)和文件名之間不允許有空格或製表符 。沒有默認的 擴展名;您必須指定完整的文件名,包括任何 擴展名。通配符不能使用。您可以使用文件名指定絕對路徑或 相對路徑。

在命令文件中,參數可以用空格或製表符分隔,因爲它們可以在命令行上使用 ;它們也可以用換行符 字符分隔。使用分號(;)標記註釋。 LIB忽略從分號到行尾的所有 文本。

您可以在命令 文件中指定全部或部分命令行,並且可以在LIB命令中使用多個命令文件。 LIB 接受命令文件輸入,就好像它是在命令行上的那個位置 中指定的一樣。命令文件不能嵌套。 LIB 回顯命令文件的內容,除非使用/ NOLOGO選項爲 。

0

這是在某些系統上一個常見的約定(但沒有得到普遍支持任何系統上)是由@開頭的文件名意味着該方案應作爲參數傳遞給程序讀取該文件的內容,並解釋內容。

所以在你的情況下,lib程序將讀取文件libf2c.lbc並使用其內容作爲參數。

我想這可能是nmake的功能,我對nmake瞭解不多。這當然不是任何「傳統」製作程序的一部分。