gpt4 book ai didi

objective-c - 如何在 Xcode 中更改 MyFramework_vers.c 的编译标志?

转载 作者:行者123 更新时间:2023-12-01 23:47:00 25 4
gpt4 key购买 nike

启用 Apple 通用版本控制后,Xcode 会自动生成 MyFramework_vers.c DERIVED_SOURCES_DIR 中的文件,其中包含定义为 const unsigned char[] 的版本字符串和编号和 const double .

但是,与 -Wmissing-variable-declarations启用( -Weverything 的一部分),这会产生警告

no previous extern declaration for non-static variable 'MyFrameworkVersionString'
no previous extern declaration for non-static variable 'MyFrameworkVersionNumber'



似乎可能的解决方案是:
  • 添加 -Wno-missing-variable-declarations到此文件的 cflags
  • 添加 extern变量定义上方的声明
  • 添加 #import拉入 extern伞头声明

  • 但是我无法弄清楚如何执行这些操作,因为该文件位于 DerivedSources 中并且不是 Compile Sources 阶段的成员。我错过了什么?

    (我找到了 VERSION_INFO_EXPORT_DECL 设置,它允许我标记变量 extern ,但随后我收到了来自 -Wextern-initializer 的“extern 变量有一个初始化程序”警告,所以这无济于事。)

    最佳答案

    我不知道有什么方法可以修改此文件的编译器参数,但可以通过滥用 VERSION_INFO_EXPORT_DECL 来解决警告问题。 .将值设置为文字换行符,后跟 #import "HeaderWithExternDeclarations.h"和另一个文字换行符。在 pbxproj 中,它应该是这样的:

    VERSION_INFO_EXPORT_DECL = "\n#import \"MyFramework.h\"\n";

    如果你想导入一个包含 Objective-C 的头文件,你还需要更改 VERSION_INFO_FILE为带有 .m 扩展名的值,例如 MyFramework_vers.m,以便将生成的文件编译为 Objective-C 源。

    或者,您可以使用相同的 hack 插入 pragma 以禁用警告:
    VERSION_INFO_EXPORT_DECL = "\n#pragma clang diagnostic ignored \"-Wmissing-variable-declarations\"\n";

    关于objective-c - 如何在 Xcode 中更改 MyFramework_vers.c 的编译标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28643930/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com