gpt4 book ai didi

macos - 缺少 MacOS 上 clang 的预期默认框架路径(/Library/Frameworks 等)

转载 作者:行者123 更新时间:2023-12-05 05:09:24 26 4
gpt4 key购买 nike

我正在尝试构建一些依赖于 SDL2 的相当简单的 C++ 代码。虽然我安装了 xcode,但我是从命令行调用 clang 而不是使用 xcode。

SDL2 框架位于/Library/Frameworks/SDL2.framework 下(请注意,虽然我在帖子中引用了 SDL2,但此问题并非特定于 SDL2。)

为了引入 SDL2 依赖项,我将 SDL2 框架指定为 clang,如下所示:

clang -std=c++11 -framework SDL2 test.cpp

但是,当我这样做时,无法找到我包含的 SDL header (例如 #include <SDL2/SDL.h>)。如果我像这样将/Library/Frameworks 作为框架搜索路径传递给 clang:

clang -std=c++11 -F/Library/Frameworks/ -framework SDL2 test.cpp

...然后一切正常。这样我就可以过去了。但是基于我在示例项目中发现的各种 makefile,似乎在 Mac OS 上,/System/Library/Frameworks 和/Library/Frameworks 路径应该是 clang 用于的默认搜索路径集的一部分定位框架。对我来说似乎并非如此。如果我将我的包含路径与此 blog post 中报告的内容进行比较,那么我显然缺少/Library/Frameworks 和/System/Library/Frameworks。

clang -x c -v -E /dev/null 的输出:

Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.14.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -E -disable-free -disable-llvm-verifier -discard-value-names -main-file-name null -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-sdk-version=10.14 -target-cpu penryn -dwarf-column-info -debugger-tuning=lldb -target-linker-version 450.3 -v -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -I/usr/local/include -Wno-atomic-implicit-seq-cst -Wno-framework-include-private-from-public -Wno-atimport-in-framework-header -Wno-quoted-include-in-framework-header -fdebug-compilation-dir -ferror-limit 19 -fmessage-length 0 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fobjc-runtime=macosx-10.14.0 -fmax-type-align=16 -fdiagnostics-show-option -o - -x c /dev/null
clang -cc1 version 10.0.1 (clang-1001.0.46.4) default target x86_64-apple-darwin18.6.0
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include"
ignoring nonexistent directory "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/Library/Frameworks"
#include "..." search starts here:
#include <...> search starts here:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.1/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks (framework directory)

clang -Xlinker -v 的输出:

@(#)PROGRAM:ld  PROJECT:ld64-450.3
BUILD 18:16:53 Apr 5 2019
configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h armv6m armv7k armv7m armv7em
Library search paths:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/lib
Framework search paths:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/

我还没有找到如何为 clang 全局指定额外的框架路径,但我不确定这是要在外部配置还是内置在 clang 二进制文件中。我确实有一个解决方法,但正如我所说,根据我在网络上看到的示例,感觉预期的行为是让这些额外的框架默认以某种方式包含路径。

将“框架”与任何谷歌搜索相结合并没有帮助淡化我查询的真实意图。

知道我可能做错了什么,或者我应该寻找什么吗?

干杯。

最佳答案

两件事:

  1. SDL2 不是标准的框架(和)
  2. macOS 在中查找 Frameworks(如输出“Framework search paths 所示) ):

    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/ \
    Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/

如果您不想使用 -L,那么您可能需要将框架复制到那里。

关于macos - 缺少 MacOS 上 clang 的预期默认框架路径(/Library/Frameworks 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57589687/

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