我正在使用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 tag
linker 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
。
只是做编辑,解决这个:
如果使用默认安装的taglib。谢谢 – WhaleDancer
删除'else:mac'子句,在构建taglib时没有获得框架,但是获得了经典库。请注意,这不是一个bug,大多数情况下,macOS开发的东西都包含在名为Frameworks的包中。 – SGaist
我做了你所建议的改变,但我遇到了一个不同的错误。我在编辑中解决了它。谢谢 – WhaleDancer