我将描述我的CMake项目目前是如何安排的。它很早,所以欢迎提出更好安排的建议。
应用程序取决于Lib1 Lib1依赖于Lib2 Lib2使用Qt
文件夹结构:
我在每个级别都有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联系起来,结果相同。
我在这里做错了什么?
答案 0 :(得分:1)
Find_packages只是使用库位置填充变量。
您需要使用Qt5Widgets,Qt5Core和Qt5Gui在Lib2上使用target_link_libraries,以便cmake可以正确链接它们。