首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QT创建者和CMake不能链接到外部库。

QT创建者和CMake不能链接到外部库。
EN

Stack Overflow用户
提问于 2022-10-01 02:31:24
回答 2查看 157关注 0票数 0

纽比在这里介绍了QT创建者和CMake,并为这个基本问题道歉,但很难将简单的外部库链接到我的主要项目。以下是项目路径:

代码语言:javascript
运行
复制
build-QMLTest-Desktop_Qt_6_3_1_MinGW_64_bit-Debug   // application binary path
QMLLib
    build-mylib-Desktop_Qt_6_3_1_MinGW_64_bit-Debug // lib binary path
    mylib
        CMakeLists.txt
        mylib.cpp   // lib source path
        mylib.h
QMLTest
    CMakeLists.txt
    main.cpp    // application source path

下面是我如何链接静态库(QMLTest/CMakeLists.txt的片段)。我使用这个线程作为参考:

How do I explicitly specify an out-of-tree source in CMake?

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
#include "../QMLLib/mylib/mylib.h"

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

但是,它无法解决,这是输出

代码语言:javascript
运行
复制
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

我没有得到一个答案,所以50分的争夺,因为我不能解决这个问题。

理想情况下,如果您可以使用CMake和QtCreator8.0向我指出最近的项目,制作一个简单的项目和库并将它们链接在一起,那就太好了。

EN

Stack Overflow用户

发布于 2022-10-03 17:13:12

首先,尝试分隔目录以添加add_subdirectory命令参数,以确保库子目录中的所有内容都已编译完毕。然后正确使用target_link_libraries命令:

代码语言:javascript
运行
复制
add_subdirectory(../QMLLib/mylib)
set(PROJECT_SOURCES
        main.cpp
        qml.qrc
)
include_directories(../QMLLib/mylib/include)
# Link subdir target AFTER definition of the project target
add_library(myproject ${PROJECT_SOURCES})
target_link_libraries(myproject mylib)

我建议您参考我在将库导入现有项目时使用的actual CMakeLists.txt file (尽管基于ROS,但CMake的工作方式相同)。从那里提取命令序列就行了。

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73915430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档