【问题标题】:How do I setup TagLib 1.11.1 as a static library for my Qt Creator project on OS X?如何在 OS X 上将 TagLib 1.11.1 设置为我的 Qt Creator 项目的静态库?
【发布时间】:2017-06-08 15:07:18
【问题描述】:

我正在使用 Qt Creator(在 OS X 上)中的 C++ 项目,我想使用 TagLib。经过大量的在线研究,我正在努力弄清楚如何才能在我的项目中使用 TagLib 库。

到目前为止我有:

  • 已下载 taglib-1.11.1.tar 并取消存档内容。
  • 下载了 CMake 并使用 GUI 来配置生成这些文件。 (我为此使用了 CodeBlocks - Unix 选项,因为我发现这是建议的)
  • 从这里我尝试过:a) 将生成的文件作为外部库添加到我的 Qt Creator 项目中。但是,这似乎只是在我当前的 .pro 文件中添加了 ~ 3 行,引用了 TagLib 文件的路径。 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

【问题讨论】:

    标签: c++ qt cmake taglib .a


    【解决方案1】:

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

    你应该有一些类似的东西:

    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:

    INCLUDEPATH += \
        /usr/local/include/taglib
    
    LIBS += \
        -L/usr/local/lib \
        -ltag
    

    【讨论】:

    • 去掉else:mac子句,构建taglib时得到的不是framework而是经典库。请注意,这不是错误,大多数情况下 macOS 开发的东西都包含在名为 Frameworks 的包中。
    • 我进行了您建议的更改,但遇到了另一个错误。我在编辑中解决了它。谢谢
    • 你在构建后安装了 taglib 吗?我目前的提议是,如果您从源/构建文件夹中使用它。否则你应该更新你的安装路径。
    • “安装”taglib 是什么意思?
    • 在构建 taglib 后调用 make install
    猜你喜欢
    • 1970-01-01
    • 2015-12-14
    • 2015-09-01
    • 2016-08-24
    • 1970-01-01
    • 2015-06-07
    • 1970-01-01
    • 2015-02-09
    • 2010-11-24
    相关资源
    最近更新 更多