使用Qt的Gyp动态库

时间:2017-02-10 02:27:46

标签: c++ xcode qt build gyp

我试图构建一个可执行文件,它使用Qt作为其依赖项之一,并使用gyp作为构建工具。我的项目构建正确,但每当我尝试运行可执行文件时,我都会看到此错误:

dyld: Library not loaded: @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore
  Referenced from: /Users/abrarhu/Documents/KRF/build/Pegasus/Pegasus-1.0/RHEL5_64/DEV.STD.PTHREAD/build/bin/mac/./Pegasus
  Reason: image not found
Abort trap: 6

我决定使用otool -L检查正在使用哪些库,结果就是这样:

/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.8)
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.4.0, current version 5.4.2)
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.4.0, current version 5.4.2)
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.4.0, current version 5.4.2)
@executable_path/../Frameworks/QtMacExtras.framework/Versions/5/QtMacExtras (compatibility version 5.4.0, current version 5.4.2)
@executable_path/../Frameworks/QtMultimedia.framework/Versions/5/QtMultimedia (compatibility version 5.4.0, current version 5.4.2)
@executable_path/../Frameworks/QtMultimediaWidgets.framework/Versions/5/QtMultimediaWidgets (compatibility version 5.4.0, current version 5.4.2) 
... other stuff

我尝试使用install_name_tool -change来更改库的位置,但如果我清理项目,则会撤消此更改。而且,它不实用,因为我必须在所有相互引用的Qt文件上运行它(例如,QtMacExtras引用QtCore)。以下是我的gyp文件中的相关部分:

'xcode_settings': 
{   
  'VALID_ARCHS': ['i386'],
  'GCC_TREAT_WARNINGS_AS_ERRORS' : 'NO',
  'FRAMEWORK_SEARCH_PATHS': [ '<(kgyp_repo_dir)/dependency/lib/<(target_os)' ],
}, #xcode_settings

'link_settings': 
{   
  'library_dirs': 
  [   
    '<(kgyp_repo_dir)/dependency/lib/<(target_os)',
    '<(kgyp_repo_dir)/dependency/lib/<(target_os)/$(CONFIGURATION)',
  ],  

  ... 
  libraries : [
      'QtCore.framework',
      'QtWidgets.framework',
      ...
  ]

我还尝试通过导出DYLD_LIBRARY_PATH并将其包含在我的xcode_settings中来设置dyld,这些选项都不起作用。

我看到这篇post帖子谈到了如何告诉textView在哪里可以找到我的图书馆,但我认为它没有成功(我对所有人都很有信心)每次我干净的东西都会被取消)。我正在寻找一种方法,我可以从gyp本身解决这个问题 - 这会生成我的所有Xcode设置。

0 个答案:

没有答案