我正在尝试创建一个程序,该程序的结构跨多个文件夹。这个想法是让每个文件夹成为一个库。但是,我编写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)
然后一切正常。 我知道我可以将所有内容放在同一文件夹中,但是在计划扩展程序时,我想/需要将它们分开。正确的方法是什么?
非常感谢!