构建多模块组件

时间:2011-04-25 07:09:31

标签: c# makefile nmake

我正在尝试构建一个多模块程序集。我有两个文件,即Fraction.cs和MyCalc.cs,两个文件都在同一个命名空间和另一个AssemblyInfo.cs中。我不知道如何制作一个makefile文件,所以我从我正在关注的书中复制了一个。以下是内容

ASSEMBLY= MySharedAssembly.dll

BIN=.\bin
SRC=.
DEST=.\bin

CSC=csc /nologo /debug+ /d:DEBUG /d:TRACE 

MODULETARGET=/t:module
LIBTARGET=/t:library
EXETARGET=/t:exe

REFERENCES=System.dll

MODULES=$(DEST)\Fraction.dll $(DEST)\MyCalc.dll
METADATA=$(SRC)\Assemblyinfo.cs

all: $(DEST)\MySharedAssembly.dll

# Assembly metadata placed in the same module as manifest
$(DEST)\$(ASSEMBLY): $(METADATA) $(MODULES) $(DEST) $(CSC) $(LIBTARGET) /addmodule:$(MODULES: =;) /out:$@ %s

# Add MyCalc.dll module to this dependency list
$(DEST)\MyCalc.dll: MyCalc.cs $(DEST) $(CSC) $(MODULETARGET) /r:$(REFERENCES: =;) /out:$@ %s

# Add Fraction
$(DEST)\Fraction.dll: Fraction.cs $(DEST) $(CSC) $(MODULETARGET) /r:$(REFERENCES: =;) /out:$@ %s

$(DEST)::
!
if !EXISTS($(DEST))
    mkdir $(DEST)
!endif

我完全理解但不熟悉语法。因此,当我尝试运行nmake时,我收到以下错误

makefile(21):致命错误v1033:语法错误:':'意外

我假设第21行出了问题。请帮忙

2 个答案:

答案 0 :(得分:0)

$(DEST)::

这是错误的一行吗?

答案 1 :(得分:0)

当我从互联网上复制paseted代码时,它终于奏效了。它起作用的原因是因为使用返回键将有错误的行分为两行。

$(DEST)\ $(ASSEMBLY):$(METADATA)$(MODULES)$(DEST)     $(CSC)$(LIBTARGET)/ addmodule:$(MODULES:=;)/ out:$ @%s