|
@@ -1,26 +1,31 @@
|
|
|
CC = cl.exe
|
|
CC = cl.exe
|
|
|
LINK = link.exe
|
|
LINK = link.exe
|
|
|
|
|
|
|
|
-# 编译和链接选项
|
|
|
|
|
|
|
+# 1. 编译与链接选项
|
|
|
CFLAGS = /nologo /W3 /EHsc /Ox /DNDEBUG /MT /I ..\TypeLibs
|
|
CFLAGS = /nologo /W3 /EHsc /Ox /DNDEBUG /MT /I ..\TypeLibs
|
|
|
-LDFLAGS = /nologo libcmt.lib libcpmt.lib Gdi32.lib user32.lib Kernel32.lib
|
|
|
|
|
|
|
+# 建议加上 /MACHINE:X64,避免架构警告
|
|
|
|
|
+LDFLAGS = /nologo /MACHINE:X64 Gdi32.lib user32.lib Kernel32.lib
|
|
|
|
|
|
|
|
-# 源文件和最终输出
|
|
|
|
|
-SOURCE = main.cpp cdrapp.cpp
|
|
|
|
|
-OBJECT = $(SOURCE:.cpp=.obj)
|
|
|
|
|
|
|
+# 2. 显式列出目标文件(在 NMAKE 中最稳妥,避免变量替换失效)
|
|
|
|
|
+OBJECTS = main.obj cdrapp.obj
|
|
|
TARGET = app.exe
|
|
TARGET = app.exe
|
|
|
|
|
|
|
|
|
|
+# 默认伪目标
|
|
|
all: $(TARGET)
|
|
all: $(TARGET)
|
|
|
|
|
|
|
|
-$(TARGET): $(OBJECT)
|
|
|
|
|
- $(LINK) $(LDFLAGS) /out:$(TARGET) $(OBJECT)
|
|
|
|
|
|
|
+# 链接规则
|
|
|
|
|
+$(TARGET): $(OBJECTS)
|
|
|
|
|
+ $(LINK) $(LDFLAGS) /out:$(TARGET) $(OBJECTS)
|
|
|
|
|
|
|
|
-%.obj: %.cpp
|
|
|
|
|
|
|
+# NMAKE 标准后缀推导规则(必须先声明后缀列表)
|
|
|
|
|
+.SUFFIXES: .cpp .obj
|
|
|
|
|
+
|
|
|
|
|
+.cpp.obj:
|
|
|
$(CC) $(CFLAGS) /c $<
|
|
$(CC) $(CFLAGS) /c $<
|
|
|
|
|
|
|
|
|
|
+# 清理
|
|
|
clean:
|
|
clean:
|
|
|
del /Q *.obj *.dll *.exe VGCoreAuto.tlh VGCoreAuto.tli
|
|
del /Q *.obj *.dll *.exe VGCoreAuto.tlh VGCoreAuto.tli
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
## 单行命令编译
|
|
## 单行命令编译
|
|
|
## cl.exe /EHsc /Ox /DNDEBUG main.cpp cdrapp.cpp /Fe:app.exe Gdi32.lib user32.lib Kernel32.lib
|
|
## cl.exe /EHsc /Ox /DNDEBUG main.cpp cdrapp.cpp /Fe:app.exe Gdi32.lib user32.lib Kernel32.lib
|