因此,如果您打开https://github.com/airbnb/BuckSample并尝试使用cocoaPods https://github.com/ReactiveCocoa/ReactiveObjC进行安装
在添加一个新的BUCK构建规则之后,如下所示
apple_third_party_lib(
name = "ReactiveObjC",
visibility = ["PUBLIC"],
srcs = glob([
"ReactiveObjC/**/*.m",
]),
exported_headers = glob([
"ReactiveObjC/**/*.h",
]),
frameworks = [
"$PLATFORM_DIR/Developer/Library/Frameworks/Foundation.framework",
],
)buck build //Pods:ReactiveObjC将失败,错误如下
Pods/ReactiveObjC/ReactiveObjC/RACPassthroughSubscriber.m:12:9: fatal error: 'RACSignalProvider.h' file not found如果我们继续下去,我们将看到RACSignalProvider.h不在Pod源文件中,但有RACSignalProvider.d,它是DTrace源文件。
当我们尝试用XCode编译它时,我们可以看到在编译实际的框架之前有一个额外的步骤
CompileDTraceScript /*user folder*/Pods/ReactiveObjC/ReactiveObjC/RACSignalProvider.d (in target 'ReactiveObjC' from project 'Pods')
cd /*user folder*/Pods
/usr/sbin/dtrace -h -s /*user folder*/Pods/ReactiveObjC/ReactiveObjC/RACSignalProvider.d -o /*user folder*/Library/Developer/Xcode/DerivedData/Odnoklassniki-gsukbcogkxolydbhlpglswzdhhpg/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/ReactiveObjC.build/DerivedSources/RACSignalProvider.h这在我们运行buck build时是不会发生的
配置中是否缺少某些内容?或者这只是BUCK不支持的?
发布于 2020-07-16 18:32:21
所以答案是,您需要使用genrule()来处理您的DTrace文件,它应该是这样的
genrule(
name = "ReactiveObjC_DTrace",
srcs = [
"ReactiveObjC/ReactiveObjC/RACSignalProvider.d",
"ReactiveObjC/ReactiveObjC/RACCompoundDisposableProvider.d",
],
bash =
"""
mkdir -p $OUT
/usr/sbin/dtrace -h -s $SRCDIR/ReactiveObjC/ReactiveObjC/RACSignalProvider.d -o $OUT/RACSignalProvider.h
/usr/sbin/dtrace -h -s $SRCDIR/ReactiveObjC/ReactiveObjC/RACCompoundDisposableProvider.d -o $OUT/RACCompoundDisposableProvider.h
""",
out = "ReactiveObjC_DTrace",
visibility = ["PUBLIC"]
)然后修改您的ReactiveObjC规则,使其如下所示
apple_third_party_lib(
name = "ReactiveObjC",
visibility = ["PUBLIC"],
srcs = glob([
"ReactiveObjC/**/*.m",
]),
deps = [
"//Pods:ReactiveObjC_DTrace",
],
exported_headers = glob([
"ReactiveObjC/**/*.h",
"$(location :ReactiveObjC_DTrace)/**/*.h"
]),
frameworks = [
"$PLATFORM_DIR/Developer/Library/Frameworks/Foundation.framework",
],
)https://stackoverflow.com/questions/62917069
复制相似问题