在尝试更改某些现有代码时,我注意到了一个奇怪的行为。我注意到的是,我们调用target_link_libraries()
,这发现没有问题的Qt5库,但是调用find_library()
却找不到相同的库。这是我的代码:
list(APPEND CMAKE_PREFIX_PATH ${QT_ROOT})
find_package(Qt5Widgets REQUIRED)
target_link_libraries(projectName Qt5::Widgets)
find_library(QTWIDGETSFOUND NAMES Qt5::Widgets)
message(STATUS ${QTWIDGETSFOUND})
其结果是:
QTWIDGETSFOUND-NOTFOUND
但是,如果我查看生成的文件link.txt
,则会发现以下行:
/home/user/Documents/work/test/build/venv/.conan/data/Qt/5.11.3/org/dev/package/80043e232e8ab07f4b25e67652a9490d9ad33d91/lib/libQt5Widgets.so.5.11.3
我得出结论,target_link_libraries()
可以找到Qt5:Widgets
库,但是find_library()
找不到。我发现这种行为很奇怪。
我的用例是,我想以我的库为目标,这很好,但随后获取找到的库的路径并将该库文件复制到某个地方。我找不到从target_link_libraries()
获取路径的方法,所以我想在之后可以调用find_library()
来获取该库的路径并从那里复制它。我对问题的唯一可能答案是Qt5:Widgets
不是库的实际名称,但是target_link_libraries()
可以从我在上面的find_package()
语句中解析出来,并且{ {1}}由于某种原因而无法执行。
所以,这是我的问题:
find_library()
工作?find_library()
之外,我还能通过什么其他方法获得刚刚与target_link_libraries()
链接的库的路径?谢谢!