QT创建者和CMake,无法链接到外部库

m0rkklqb  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(299)

Newbee在这里介绍QT creator和CMake,并对基本问题表示歉意,但很难将简单的外部库链接到我的主项目。以下是项目路径:

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?

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

我无法得到答案,所以50分争夺,因为我不能解决这个问题。
理想情况下,如果你能指出我最近的项目使用CMake和QT Creator 8.0制作一个简单的项目和库,并将它们链接在一起,这将是伟大的。

igetnqfo

igetnqfo1#

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

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(尽管CMake是基于ROS的,但工作方式是相同的)。

5ktev3wc

5ktev3wc2#

我最后重新整理了文件夹,解决方案如下:
无法将库源添加到QT上的cmake项目
我只包含了一个单独的库项目的源代码

相关问题