2017-01-23 34 views
1

我正在使用Qt Creator(在OS X上)的C++项目,我想使用TagLib。在网上进行了大量研究之后,我正在努力想办法让我可以在我的项目中使用TagLib库。如何将TagLib 1.11.1作为Qt Creator项目的静态库设置在OS X上?

到目前为止,我有:

  • 下载taglib-1.11.1.tar和未归档的内容。
  • 下载CMake并使用GUI至配置生成这些文件。 (我用的代码块 - Unix的选项对于这一点,从我发现这已经建议)
  • 在这里,我曾尝试:一)将所产生的文件作为外部库,以我的Qt Creator的项目。但是,这似乎只是将〜3行添加到引用TagLib文件路径的当前.pro文件中。 b)专门为这个图书馆创建一个新项目... c)把我的头撞在墙上试图让它工作。

任何帮助,将不胜感激,谢谢。

编辑:

当我添加外部库,将以下内容添加到我的.pro文件:

win32:CONFIG(release, debug|release): LIBS += -  L$$PWD/../../../Libraries/taglib-1.11.1/taglib/release/ -ltag 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/debug/ -ltag 
else:mac: LIBS += -F$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -framework tag 
else:unix: LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 

INCLUDEPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 
DEPENDPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 

然后我的qmake运行,该项目建立&运行正常。但是,如果我尝试执行类似#include <tag.h>的操作,则会出现错误。对于这个例子,它说'tstring.h' file not found #include "tstring.h"。然后,当我删除错误行时,它会在运行时给出不同的错误framework not found taglinker command failed with exit code 1 (use -v to see invocation)

编辑:

中的.pro代码更改为:

#win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/release/ -ltag 
#else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/debug/ -ltag 
LIBS += -F$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 
#else:unix: LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 

INCLUDEPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 
DEPENDPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 

现在我得到的错误library not found for -ltag

下面是../Libraries/taglib-1.11.1下的文件的图像以及我在CMake link中使用的选项。

编辑:

我安装它使用以下:

cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_BUILD_TYPE=Release 
    make 
    sudo make install 

现在在库文件的目录看起来像following。然后我在Qt中重新添加了外部目录。所以,现在我的.pro文件包含:

LIBS += -L$$PWD/../../../Libraries/taglib-1.11.1/taglib/ -ltag 

INCLUDEPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 
DEPENDPATH += $$PWD/../../../Libraries/taglib-1.11.1/taglib 

PRE_TARGETDEPS += $$PWD/../../../Libraries/taglib-1.11.1/taglib/libtag.a 

现在它运行良好,除非我尝试做一些像#include <tag.h>,它提供了错误'tstring.h' file not found

回答

0

如果您只构建taglib而不安装它。

你应该沿着线的东西:

INCLUDEPATH += \ 
    /usr/local/include/taglib 

LIBS += \ 
    -L/usr/local/lib \ 
    -ltag 
+0

只是做编辑,解决这个:

INCLUDEPATH += \ /path/to/taglib_source/taglib \ /path/to/taglib_source/taglib/toolkit \ /path/to/taglib_builddir/ LIBS += \ -L/path/to/taglib_builddir/taglib \ -ltag 

如果使用默认安装的taglib。谢谢 – WhaleDancer

+0

删除'else:mac'子句,在构建taglib时没有获得框架,但是获得了经典库。请注意,这不是一个bug,大多数情况下,macOS开发的东西都包含在名为Frameworks的包中。 – SGaist

+0

我做了你所建议的改变,但我遇到了一个不同的错误。我在编辑中解决了它。谢谢 – WhaleDancer