You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt Creator与CMake无法链接外部静态库问题求助

Qt Creator 8.0+CMake 环境下静态库链接问题求助

项目路径结构

build-QMLTest-Desktop_Qt_6_3_1_MinGW_64_bit-Debug   // 应用程序编译输出路径
QMLLib
    build-mylib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug // 静态库编译输出路径
    mylib
        CMakeLists.txt
        mylib.cpp   // 库源码文件
        mylib.h
QMLTest
    CMakeLists.txt
    main.cpp    // 应用程序源码文件

尝试的配置与代码

QMLTest/CMakeLists.txt 片段

add_subdirectory(../QMLLib/mylib ../QMLLib/build-mylib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug)

target_link_libraries(mylib)

set(PROJECT_SOURCES
        main.cpp
        qml.qrc
)

main.cpp 代码

#include "../QMLLib/mylib/mylib.h"

int main(int argc, char *argv[])
{
    Mylib mylib;
}

报错信息

C:/Qt/Tools/mingw1120_64/bin/../lib/gcc/x86_64-w64-mingw32/11.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: CMakeFiles/QMLTest.dir/main.cpp.obj: in function `qMain(int, char**)':
C:/myroot/UITest/QMLTest/main.cpp:13: undefined reference to `Mylib::Mylib()'
collect2.exe: error: ld returned 1 exit status

正确配置示例

1. 静态库的CMakeLists.txt(QMLLib/mylib/CMakeLists.txt)

cmake_minimum_required(VERSION 3.16)

project(mylib)

# 生成静态库
add_library(${PROJECT_NAME} STATIC
    mylib.cpp
    mylib.h
)

# 暴露头文件路径,让主项目可直接引用
target_include_directories(${PROJECT_NAME} PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
)

2. 主项目的CMakeLists.txt(QMLTest/CMakeLists.txt)

cmake_minimum_required(VERSION 3.16)

project(QMLTest)

set(CMAKE_CXX_STANDARD 17)

# 添加库的源码目录,并指定编译输出路径
add_subdirectory(../QMLLib/mylib ../QMLLib/build-mylib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug)

set(PROJECT_SOURCES
    main.cpp
    qml.qrc
)

# 创建应用程序目标
add_executable(${PROJECT_NAME} ${PROJECT_SOURCES})

# 将静态库链接到应用程序(格式:目标名在前,库名在后)
target_link_libraries(${PROJECT_NAME} PRIVATE mylib)

# Qt项目需添加对应模块(根据实际需求调整)
find_package(Qt6 REQUIRED COMPONENTS Core Quick)
target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::Core Qt6::Quick)

3. 修改main.cpp的头文件引用

#include "mylib.h"

int main(int argc, char *argv[])
{
    Mylib mylib;
    // 后续Qt初始化代码...
}

内容的提问来源于stack exchange,提问作者gmmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:20:34