我正在为qt应用准备cmake构建。我使用的是以下结构。
libMyApp,它使用
SET(QT5_MODULES Widgets PrintSupport Network XmlPatterns)
FIND_PACKAGE(Qt5 REQUIRED COMPONENTS ${QT5_MODULES})和
TARGET_LINK_LIBRARIES(
${TARGET_NAME}
Qt5::Widgets
Qt5::PrintSupport
Qt5::Network
Qt5::XmlPatterns
)libMyApp成功构建并生成libMyApp.a (静态库)
现在,我在我的应用程序MyApp中使用这个库,它使用
SET(QT5_MODULES Widgets PrintSupport XmlPatterns)
FIND_PACKAGE(Qt5 REQUIRED COMPONENTS ${QT5_MODULES})
TARGET_LINK_LIBRARIES(
${TARGET_NAME}
Qt5::Widgets
Qt5::PrintSupport
Qt5::XmlPatterns
${CODE_LIB_FILES}
)${CODE_LIB_FILES}是libMyApp.a MyApp的列表保持路径成功构建并最终显示链接错误
undefined reference to `QPrinter::QPrinter(QPrinter::PrinterMode)xml也发生了同样的事情。
undefined reference to `QDomNode::isElement() const'有人能指出这里出了什么问题吗?
或使用printsupport和xmlpatterns模块描述相同场景的任何示例程序。
发布于 2018-08-24 13:47:07
函数TARGET_LINK_LIBRARIES()中条目的顺序很重要。最后将提到不依赖的库,这些库通常是一些标准库或外部库,在本例中是Qt5库。
举个例子:
Lib_A依赖于Lib_B和Lib_stdLib_B依赖于Lib_stdLib_std没有依赖项。然后,该职能的调用如下:
TARGET_LINK_LIBRARIES(
${TARGET_NAME} # Name of the app
"Lib_A"
"Lib_B"
"Lib_std" # Last entries: Std Libs, external Libs, ...
)在这个应用程序中,我假设${CODE_LIB_FILES}=libMyApp.a对Qt5-Lib有一些依赖关系,所以将这个条目移到Qt5-Lib之上是合理的。
SET(QT5_MODULES Widgets PrintSupport XmlPatterns)
FIND_PACKAGE(Qt5 REQUIRED COMPONENTS ${QT5_MODULES})
TARGET_LINK_LIBRARIES(
${TARGET_NAME}
${CODE_LIB_FILES} # <<< Moved this entry up
Qt5::Widgets
Qt5::PrintSupport
Qt5::XmlPatterns
)https://stackoverflow.com/questions/51994603
复制相似问题