CMake应用程序依赖于基于Qt的库

时间:2016-10-03 17:58:24

标签: c++ qt cmake

我将描述我的CMake项目目前是如何安排的。它很早,所以欢迎提出更好安排的建议。

应用程序取决于Lib1 Lib1依赖于Lib2 Lib2使用Qt

文件夹结构:

  • 顶层
    • LIB1
      • LIB2
    • 应用

我在每个级别都有CMakeLists.txt。

在Lib1中我添加了lib_library(STATIC),然后是lib_link_library和Lib2,它也是STATIC。

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

最后,App的CMakeLists.txt执行add_executable,后跟lib1的target_link_libraries。

所有内容都编译和链接,直到我实际在App代码中调用以使用Lib2中的函数。然后我得到一堆未解决的符号链接器错误,指向Lib2中的函数。如果我将Lib2设为OBJECT库并相应地更改Lib1中的链接,那似乎并不重要。我也尝试将App与Lib1和Lib2联系起来,结果相同。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

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

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