clang:不能使用带有多个-arch选项的'precompiled-header'输出

时间:2013-10-12 15:16:48

标签: c xcode gcc clang

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

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

我的GNU Makefile包含以下片段:

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。

1 个答案:

答案 0 :(得分:1)

solution是从文件列表中过滤出头文件 使用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不再混淆了。