在编译我的项目时,从 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 有符号链接(symbolic link)。
最佳答案
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
就不再混淆了。
关于clang:不能将 'precompiled-header' 输出与多个 -arch 选项一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19335752/