【问题标题】:Windows makefile (name) - syntax error: ')' missing in macro invocationWindows makefile(名称) - 语法错误:宏调用中缺少“)”
【发布时间】:2017-05-26 20:40:22
【问题描述】:

我获得了一个 Windows makefile 用于我必须执行的 OpenGL 分配,但是当我使用“NMake”运行它时它会引发此错误:

makefile(7) : fatal error U1000: syntax error: ')' missing in macro invocation

这是他们给我的makefile的内容:

CXX=cl
COMMONFLAGS= -nologo
CXXFLAGS= -MD -c
INCLUDES= -Iinclude
LFLAGS= -incremental:no -manifest:no OpenGl32.lib glew32.lib SDL2.lib SDL2main.lib -SUBSYSTEM:CONSOLE
BUILDDIR=build
SRCDIR=src
SRC=$(wildcard $(SRCDIR)/*.cpp)
_OBJ=$(SRC:.cpp=.obj)
OBJ=$(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(_OBJ))
TARGET=prac1.exe
TARGETPATH=$(BUILDDIR)/$(TARGET)

build: $(OBJ) $(TARGET)

run:
    cd $(BUILDDIR); ./$(TARGET)

$(TARGET): $(OBJ)
    $(CXX) $(OBJ) -Fe$(TARGETPATH) $(COMMONFLAGS) -link $(LFLAGS)


$(BUILDDIR)/%.obj: $(SRCDIR)/%.cpp
    $(CXX) $(INCLUDES) $(CXXFLAGS) $< -Fo$@ $(COMMONFLAGS)

clean:
    rm -f $(TARGETPATH)
    rm -f $(OBJ)

我该如何解决?非常感谢!

【问题讨论】:

  • 你的问题到底是什么?
  • @iehrlich 我该如何解决这个错误?
  • 它是完整的makefile吗?
  • @iehrlich 是的
  • 仔细查看第 7 行。并将其与the documentation of the error message 进行比较:“表示在宏调用中出现了左括号“(”,但没有匹配的右括号“)”。正确的形式是 $(name);$n 可以是一个字符的名字。"

标签: c++ windows makefile macros invocation


【解决方案1】:

据我所知,这不是 NMake makefile,而是 GNU Make makefile。此外,Windows 中没有“rm”命令。似乎有人拿了一个 *nix makefile 并为 Windows 构建半酿制它......

让我这么想的主要是 wildcardpatsubst 函数(NMake AFAIK 不支持)、用于删除的 rm 命令和 *nix 样式路径的存在。

【讨论】:

  • 我该如何修复它?
  • 很简单,你自己写。或者你问给你的人你打算如何运行它。或者,如果您只是需要启动并运行它,您可以考虑使用 VC++ express(可以免费下载)创建一个简单的解决方案。实际上有很多选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 2016-08-14
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多