c++ - 如何让 Qt Creator 添加 CEF 框架到 Mac OS X 上的 DEST_DIR?

标签 c++ macos qt qmake chromium-embedded

我正在 Qt Creator 中开展一个合作项目,我已经设法让它编译:我链接了 CEF Framework 和 CEF dll 包装器。但是,当我尝试运行它时,我得到:

dyld: Library not loaded: @executable_path/Chromium Embedded Framework
Reason: image not found

据我所知,该框架需要复制到我的 DEST_DIR 中,复制到 .app/Contents/MacOS 或类似的地方。即使通过手动复制框架,我也没有设法让它工作。 另外,由于开发是跨平台的,我想知道是否有办法告诉 qmake 如何将框架复制到我的 DEST_DIR。 如果您能帮助我们理解如何在 Qt Creator 中处理 Mac OS X 上的框架,我们将不胜感激。

最佳答案

As far as my understanding goes, the framework needs to be copied into my DEST_DIR, into .app/Contents/MacOS or something like that.

你快到了。框架一般复制到

.app/Contents/Frameworks

但是,您的 bundle 的可执行文件包含对它期望这些框架库所在位置的引用,并且已将它们复制到应用程序 bundle 中,您需要告诉可执行文件它们所在的位置。

使用 oTool-L 参数,you can see the libraries referenced by the executable .你会用完整的路径来调用它。例如

otool -L /Applications/Calculator.app/Contents/MacOS/Calculator

对于框架中的每一个dylib,你都需要使用命令行工具install_name_tool来修复路径

deploying a Qt application对于 Qt,我们必须运行 ma​​cdeployqt。这基本上对 Qt 框架做了同样的事情;将它们复制到相关的框架文件夹中并更新路径。

我自己没用过,但是根据documentation , macdeployqt 支持处理第 3 方框架,选项 -executable=< path >

关于c++ - 如何让 Qt Creator 添加 CEF 框架到 Mac OS X 上的 DEST_DIR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393385/

相关文章:

objective-c - 带有 ARC 的 Interface Builder 中的单例

objective-c - 使用 OSX 可执行文件连接 GCDAsyncSocket 时出现问题

macos - 在 Mac OS X 中访问扫描仪

qt - 在QTableView中,什么 "signal"触发编辑模式

qt - QML SwipeView 具有不透明的背景。我怎样才能使它透明?

c++ - 在同一个对象上创建多个 shared_ptr "families"时 shared_from_this 的意外行为

c++ - 错误 LNK2019 : unresolved external symbol (libJPEG compiling and linking)

c++ - "Proper way"将文件夹添加到 XCode 4 中的包含路径

c++ - 在函数和子函数中调用相同的临界区

c++ - 如果代码中的任何地方都没有连接插槽,是否有理由发出 Qt 信号?