如何将Qt资源链接到库

时间:2019-08-12 12:11:34

标签: c++ qt cmake qt5

我正在尝试创建一个程序,该程序的结构跨多个文件夹。这个想法是让每个文件夹成为一个库。但是,我编写CMake文件的方式导致程序中没有图标出现。我需要帮助整理我的CMake。

项目结构如下:

Test
|-- CMakeLists.txt
|-- Backend
|   |-- CMakeLists.txt
|   `-- ...
`-- Frontend
    |-- CMakeLists.txt
    |-- main.cpp
    |-- mainwindow.cpp
    |-- mainwindow.h
    |-- mainwindow.ui
    |-- resources.qrc
    `-- icons
        |-- icon1.png
        |-- icon2.png
        `-- ...

mainwindow.cpp应该使用后端的功能,我尚未编写。应该将后端作为类似于前端的库添加。项目结构现在还可以吗?

这是顶级CMake:

cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)

project(Test)

find_package(Qt5 COMPONENTS REQUIRED Core Gui Widgets)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

add_subdirectory(Frontend)
add_subdirectory(Backend)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/Bin)

add_executable(Test)

target_link_libraries(Test FrontendLib)

这是Frontend文件夹中的CMake:

add_library(FrontendLib main.cpp mainwindow.cpp resources.qrc)
target_link_libraries(FrontendLib Qt5::Core Qt5::Gui Qt5::Widgets)

此外,这是我如何使用代码中的资源:

ui->PB_Load->setIcon(QIcon(":/icons/icon1.png"));

如果我这样构建项目,则程序中没有图标。 但是,如果我使用以下命令将它们显式添加到顶级CMakeLists.txt中:

add_executable(Test Frontend/resources.qrc)

然后一切正常。 我知道我可以将所有内容放在同一文件夹中,但是在计划扩展程序时,我想/需要将它们分开。正确的方法是什么?

非常感谢!

0 个答案:

没有答案