2

在编译我的项目时,从 Xcode 4.5 切换到 Xcode 5 时突然收到此错误消息。

clang: cannot use 'precompiled-header' output with multiple -arch options    

我的 GNUMakefile包含以下片段:

define build
CC-$(platform)-$(2)?=$(CC-$(platform))

$(bindir)/$(platformdir)-$(2)$($(3)-dirsuffix)/$(1)_%: $(srcdir)/$(1)/%.c $(common)
  mkdir -p $$(@D)
  $$(CC-$(platform)-$(2)) $(cflags) $($(3)-cflags) $(CFLAGS) -o $$@ $$^ $($(3)-ldflags) $(LDFLAGS)
endef

$(foreach library,$(libraries),$(foreach arch,$(archs),$(foreach configuration,$(configurations),$(eval $(call build,$(library),$(arch),$(configuration))))))

$(CC)评估cc与 clang 符号链接的哪个。

4

1 回答 1

1

解决方案是从正在编译的文件列表中过滤掉头文件,方法是使用 GNU的Make函数$(filter-out pattern...,text)过滤掉所有匹配的内容%.h

define build
CC-$(platform)-$(2)?=$(CC-$(platform))

$(bindir)/$(platformdir)-$(2)$($(3)-dirsuffix)/$(1)_%: $(srcdir)/$(1)/%.c $(common)
  mkdir -p $$(@D)
  $$(CC-$(platform)-$(2)) $(cflags) $($(3)-cflags) $(CFLAGS) -o $$@ $$(filter-out %.h,$$^) $($(3)-ldflags) $(LDFLAGS)
endef

然后clang就不再迷茫了。

于 2013-10-12T15:17:59.930 回答