首页 > 解决方案 > ALWAYS_SEARCH_USER_PATHS NO vs YES 的影响

问题描述

我正在使用 Xcode 9.2,我输入 ALWAYS_SEARCH_USER_PATHS=NO 它会显示一些错误,我的一个 file.h 在项目中找不到,但它存在于项目文件夹中。但是当我输入 ALWAYS_SEARCH_USER_PATHS=yes 时,它编译时没有任何错误。

请参考 Adob​​e sdKCC2020 的项目要求

需要注意的其他项目更改

In common.xcconfig, CLANG_CXX_LANGUAGE_STANDARD has been set to gnu++14 i.e. the code is compiled as GNU C++-14 compliant.
BOOST_SPIRIT_THREADSAFE has been defined centrally in common.xcconfig.
ALWAYS_SEARCH_USER_PATHS has been set to NO in common.xcconfig. You may need to change #include statements that were using user search

路径文件,但语法为“#include”,并用语法“#include”替换它们。由于设置 ALWAYS_SEARCH_USER_PATHS 在 Xcode 的未来版本中已弃用,因此正在主动进行此更改。

虽然头文件包含#include“file.h”,但它在项目源文件夹中找到

只是我无法理解 sdkCC2020 的项目要求以及 ALWAYS_SEARCH_USER_PATHS=Yes 与 ALWAYS_SEARCH_USER_PATHS=No 之间的区别

标签: xcodemacosincludeheader-files

解决方案


https://help.apple.com/xcode/mac/11.4/#/itcaec37c2a6

请参阅上面的文档。该设置在 Xcode 10 及更高版本中已弃用。

当始终搜索用户路径 (ALWAYS_SEARCH_USER_PATHS) 设置为 YES 时生成的旧标头映射不受新构建系统的支持。相反,将 ALWAYS_SEARCH_USER_PATHS 设置为 NO 并迁移到使用现代标头包含语法。将项目存储库中任何需要的头文件添加到 Xcode 项目中,以确保它们可用于#include(通过项目范围的头映射)。对项目标题使用引号样式包含(“example.h”),并为系统标题保留尖括号包含(<example.h>)。

https://developer.apple.com/documentation/xcode-release-notes/build-system-release-notes-for-xcode-10

所以对于用户标题:

  • 将它们添加到 Xcode 项目中
  • 或设置USER_HEADER_SEARCH_PATHS为包含文件的路径,相对于$SRCROOT.

对于系统标头:

  • 设置SYSTEM_HEADER_SEARCH_PATHS为系统/外部库包含文件的路径。

推荐阅读