Qt走起 - 走进Qt - QT之CMake
QT引用静态库.a文件或.lib文件(CMake项目)
在Windows平台,如果采用MinGw编译静态库,则编译后的文件后缀为.a 。
例如:libHtDbHelper.a


现在介绍在一个Qt Creator创建的Widgets应用程序HtDbUI中,引用该静态库。

测试环境为Windows 10 ,Qt Creator创建应用程序时,采用CMake构建系统。使用MinGw 64位构建:


1、在HtDbUI项目的根目录下,创建两个文件夹:include和lib 。
把静态库libHtDbHelper.a 复制到 lib文件夹下。
把头文件HtDbHelper.h 复制到include文件夹下。


2、打开HtDbUI的CMakeList.txt文件。

添加以下代码:
add_library(HtDbHelper STATIC IMPORTED)
set_target_properties( HtDbHelper PROPERTIES IMPORTED_LOCATION ${PROJECT_SOURCE_DIR}/lib/libHtDbHelper.a )

target_include_directories(HtDbUI PRIVATE ${PROJECT_SOURCE_DIR}/include/)

target_link_libraries(HtDbUI PUBLIC HtDbHelper )

3、现在可以在HtDbUI的代码中添加引用:
#include<HtDbHelper.h>
然后可以开始使用HtDbHelper中类或者结构等了。

另外:
如果使用的是MSVC 2019编译静态库,编译后的文件后缀名为.lib

对CMake文件的一些注释:

1、通过import方式引入外部库(即已在外部编译生成了.so, .a库文件),所以add_library命令要指明"IMPORTED"

2、需要指明是动态链接库还是静态链接库,所以add_library命令要指明 "SHARED" 或者 "STATIC"

3、需要指明库文件的具体位置,所以在set_target_properties命令中设置

4、最后对二进制文件HtDbUI进行库文件链接时,通过target_link_libraries命令指明库文件,且通过target_include_directories命令指明相应的库头文件
收藏 列表

评论:

导航