gpt4 book ai didi

xcode - Xcode 项目模板中的每个文件编译器标志

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

我正在构建一个新的 Xcode 项目模板,我想包含一个非 ARC 的库。但我的整个项目都是 ARC,因此构建项目的唯一方法是在该库的文件上指定编译器标志 (-fno-objc-arc)。

如何在 Xcode 项目模板中执行此操作?
我尝试在 Definitions 字典中的特定文件上设置它,包括 COMPILER_FLAG 和 CompilerFlag。它们都不起作用。

我完全没有找到这方面的文档,但我很确定它可以完成。

更新:
Apple 回复了我的支持请求,表示目前无法做到这一点。所以不幸的是,我们很不走运,直到他们最终对模板和文档做了一些事情。

更新 2:
我知道如何通过使用构建阶段脚本来破解这个问题,它将检查 Xcode 项目并添加所需的标志。我会尽快发布答案。

最佳答案

我知道这个页面是旧的,但我想提供我对提供的脚本的看法:

echo "Checking compiler flags."
PROJ_FILE="${PROJECT_FILE_PATH}/project.pbxproj"

REQUIRE_ARC=("File1ThatNeedsARC.m" "File2ThatNeedsARC.m")
REQUIRE_NO_ARC=("File1ThatNeedsARC.m" "File2ThatNeedsARC.m")

STR_TEST_CASE="File1ThatNeedsARC.m \*/; };"

if grep "${STR_TEST_CASE}" "$PROJ_FILE"
then
echo "Adding compiler flags."
for file in ${REQUIRE_ARC[@]}
do
STR_SRCH_ARC=$file" \*/; };"
STR_RPLC_ARC=$file" \*/; settings = {COMPILER_FLAGS = \"-fobjc-arc\"; }; };"
if grep "${STR_SRCH_ARC}" "$PROJ_FILE"
then
sed -i "" "s|${STR_SRCH_ARC}|${STR_RPLC_ARC}|g" "$PROJ_FILE"
fi
done
for file in ${REQUIRE_NO_ARC[@]}
do
STR_SRCH_NOARC=$file" \*/; };"
STR_RPLC_NOARC=$file" \*/; settings = {COMPILER_FLAGS = \"-fno-objc-arc\"; }; };"
if grep "${STR_SRCH_NOARC}" "$PROJ_FILE"
then
sed -i "" "s|${STR_SRCH_NOARC}|${STR_RPLC_NOARC}|g" "$PROJ_FILE"
fi
done
else
echo "Compiler flags already added."
exit 0
fi

只需使用 .m 文件适本地更新数组 REQUIRE_ARC 和 REQUIRE_NO_ARC(内容以空格分隔)。同时更新测试用例 STR_TEST_CASE

此脚本应添加到您的 xcode 项目的构建阶段(Editor>Add Build Phase > Add Run Script Build Phase)(在 Compile Sources 上方)。

感谢所有帮助促成此脚本的人。

-丹

关于xcode - Xcode 项目模板中的每个文件编译器标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19751074/

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