nmake致命错误U1034:语法错误:分隔符丢失

时间:2016-07-19 19:01:14

标签: c# makefile nmake gracenote

# gnsdk C# wrapper sample makefile
##

CC=Csc.exe
CP=cp

GNSDK_LIB_PATH=../../../../lib/$(GNSDK_PLATFORM)
GNSDK_WRAPPER_LIB_PATH=../../lib/$(GNSDK_PLATFORM)
GNSDK_MARSHAL_LIB=$(GNSDK_WRAPPER_LIB_PATH)/gnsdk_csharp_marshal.dll
GNSDK_CSHARP_LIB=../../lib/gnsdk_csharp.dll


CSHARP_FLAGS=/noconfig /nowarn:1701,1702 /nostdlib+ /errorendlocation
CSHARP_REFS=/reference:$(GNSDK_CSHARP_LIB) /reference:"Microsoft.CSharp.dll" /reference:"mscorlib.dll" /reference:"System.Core.dll" /reference:"System.Data.DataSetExtensions.dll" /reference:"System.Data.dll" /reference:"System.dll" /reference:"System.Xml.dll" 

ifeq ($(GNSDK_PLATFORM), win_x86-32)
    CSHARP_FLAGS+=/platform:x86
endif

ifeq ($(GNSDK_PLATFORM), win_x86-64)
    CSHARP_FLAGS+=/platform:x64
endif

SAMPLE_TARGET=sample.exe


build_sample:
    $(CC) $(CSHARP_FLAGS) $(CSHARP_REFS) /out:$(SAMPLE_TARGET) /target:exe /utf8output MusicIDStream.cs
    $(CP) $(GNSDK_MARSHAL_LIB) .
    $(CP) $(GNSDK_CSHARP_LIB) .

我有一个c#应用程序的makefile。 我试图从visual studio命令提示符运行它。 这行有错误:CSHARP_FLAGS + = / platform:x86

2 个答案:

答案 0 :(得分:3)

您正在查看的makefile似乎是一个GNU make makefile。你不能将它与nmake一起使用。如果你想使用这个makefile,你必须安装GNU make,否则写一个nmake makefile与nmake一起使用。

答案 1 :(得分:0)

缺少分隔符是指nmake缺少目标与其依赖对象之间的冒号。

在这种情况下,这是由于使用了NMAKE无法识别并解释为目标的GNU make ifeq引起的。使用NMAKE的if子句。

因此,将以下if子句替换为:

!if "$(GNSDK_PLATFORM)" == "win_x86-32"
CSHARP_FLAGS+=/platform:x86
!endif

!if "$(GNSDK_PLATFORM)" == "win_x86-64"
CSHARP_FLAGS+=/platform:x64
!endif

请注意!在if和endif子句之前标记,也缺少其他的行空间。这些很重要。