clang:不能将 'precompiled-header' 输出与多个 -arch 选项一起使用

标签 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 有符号链接(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/

相关文章:

c - execvp() 和不完整的多参数命令的问题

不同目标之间的 Swift 颜色 Assets

swift - 如何使用 Xcode 在 Dock 中为我的 macOS 应用程序创建自定义 Dock 菜单

linux - CMake - 如何避免链接器命令行中的 CMAKE_CXX_FLAGS

c++ - 在模板参数列表中使用 decltype 来推断指向类成员的指针的类型

平台之间的 C 枚举大小不匹配有潜在危险

c 编程将十六进制放入 char

c - 在 C 中反转 2 个字符串

ios - XMPP、CoreData - 如何仅加载自身和目标用户消息?

linux - Linux系统的OPEN_MAX定义在哪里?