如何在 Xcode 中更改 MyFramework_vers.c 的编译标志?
How to change compilation flags for MyFramework_vers.c in Xcode?
启用 Apple 通用版本控制后,Xcode 在 DERIVED_SOURCES_DIR
中自动生成一个 MyFramework_vers.c
文件,其中包含定义为 const unsigned char[]
和 [=15] 的版本字符串和编号=].
但是,在启用 -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 variable has an initializer" 警告,因此没有帮助。)
我不知道有什么方法可以修改此文件的编译器参数,但可以通过滥用 VERSION_INFO_EXPORT_DECL
来解决警告。将值设置为文字换行符,后跟 #import "HeaderWithExternDeclarations.h"
和另一个文字换行符。在 pbxproj 中,它应该看起来像这样:
VERSION_INFO_EXPORT_DECL = "\n#import \"MyFramework.h\"\n";
如果要导入包含 Objective-C 的 header,您还需要将 VERSION_INFO_FILE
更改为扩展名为 .m 的值,例如 MyFramework_vers.m生成的文件被编译为 Objective-C source.
或者,您可以使用相同的 hack 插入编译指示来禁用警告:
VERSION_INFO_EXPORT_DECL = "\n#pragma clang diagnostic ignored \"-Wmissing-variable-declarations\"\n";
启用 Apple 通用版本控制后,Xcode 在 DERIVED_SOURCES_DIR
中自动生成一个 MyFramework_vers.c
文件,其中包含定义为 const unsigned char[]
和 [=15] 的版本字符串和编号=].
但是,在启用 -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 variable has an initializer" 警告,因此没有帮助。)
我不知道有什么方法可以修改此文件的编译器参数,但可以通过滥用 VERSION_INFO_EXPORT_DECL
来解决警告。将值设置为文字换行符,后跟 #import "HeaderWithExternDeclarations.h"
和另一个文字换行符。在 pbxproj 中,它应该看起来像这样:
VERSION_INFO_EXPORT_DECL = "\n#import \"MyFramework.h\"\n";
如果要导入包含 Objective-C 的 header,您还需要将 VERSION_INFO_FILE
更改为扩展名为 .m 的值,例如 MyFramework_vers.m生成的文件被编译为 Objective-C source.
或者,您可以使用相同的 hack 插入编译指示来禁用警告:
VERSION_INFO_EXPORT_DECL = "\n#pragma clang diagnostic ignored \"-Wmissing-variable-declarations\"\n";