使应用依赖于基于qt的库

CMake app dependency on Qt-based library

本文关键字:qt 的库 应用 依赖于      更新时间:2023-10-16

我将描述我的CMake项目目前如何安排。时间还早,欢迎提出更好安排的建议。

App依赖于Lib1libb1依赖于libb2libb2使用Qt

文件夹结构:

  • 顶级
    • Lib1
      • Lib2
    • 应用

我有CMakeLists.txt在每个级别。

在Lib1中我add_library (STATIC),然后在Lib2中target_link_library(也是STATIC)

Lib2的CMakeLists.txt为Qt5Widgets, Qt5Core和Qt5Gui执行find_package调用。

最后,App的CMakeLists.txt执行add_executable,然后是Lib1的target_link_libraries。

一切都编译和链接,直到我在应用程序代码中实际调用使用Lib2中的函数。然后我得到一堆未解决的符号链接器错误指向从Lib2的函数。如果我使Lib2成为一个对象库并相应地更改Lib1中的链接,这似乎并不重要。我还尝试将应用程序链接到Lib1和Lib2,结果相同。

我在这里做错了什么?

Find_packages只是用库位置填充变量。

您需要在Lib2上与Qt5Widgets, Qt5Core和Qt5Gui一起target_link_libraries,以便cmake可以正确链接它们。