启用 Apple 通用版本控制后,Xcode 会自动生成MyFramework_vers.c
文件在DERIVED_SOURCES_DIR
,其中包含版本字符串和数字,定义为const unsigned char[]
and const double
.
然而,随着-Wmissing-variable-declarations
启用(部分-Weverything
),这会产生警告
非静态变量“MyFrameworkVersionString”之前没有外部声明
非静态变量“MyFrameworkVersionNumber”之前没有外部声明
看来可能的解决方案是:
- add
-Wno-missing-variable-declarations
到该文件的 cflags
- add
extern
声明位于变量定义之上
- add a
#import
拉入extern
来自伞头的声明
但我不知道如何执行这些操作,因为该文件位于 DerivedSources 中并且不是编译源阶段的成员。我缺少什么?
(我找到了VERSION_INFO_EXPORT_DECL
设置允许我标记变量extern
,但后来我收到“外部变量有一个初始化程序”警告,来自-Wextern-initializer
,所以这没有帮助。)
我不知道修改此文件的编译器参数的方法,但可以通过滥用来解决警告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 源代码。
或者,您可以使用相同的技巧插入一个编译指示来禁用警告:
VERSION_INFO_EXPORT_DECL = "\n#pragma clang diagnostic ignored \"-Wmissing-variable-declarations\"\n";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)