Qt5 与 CMake 在将相关源文件放入库时不编译 .ui 文件



我正在尝试使用 CMake 编译一个具有多个子目录的 Qt5 项目。一些与Qt .ui文件相关的代码使用add_library命令编译为库。我发现ui_*.h头文件根本没有用uic编译。但是如果我把 .ui 相关的源文件放在 add_executable 中,那么ui_*.h文件是自动生成的。在这里,我提供了一个示例项目来帮助演示此问题。可以通过 https://www.dropbox.com/s/q2i9imexhjarsbf/qt5-cmake.zip?dl=0 访问整个压缩的项目文件。CMakeLists.txt 文件如下所示。我知道还有其他与未生成的ui_*.h文件相关的帖子,但它们似乎没有可以解决我问题的答案。

cmake_minimum_required(VERSION 2.8.11)
project(helloworld)
# Find includes in the build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Turn on automatic invocation of the MOC
set(CMAKE_AUTOMOC ON)

# Add a compiler flag
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
# Find the QtWidgets library
find_package(Qt5Widgets REQUIRED)
# Generate code from ui files
qt5_wrap_ui(UI_HEADERS mainwindow.ui)
# Generate rules for building source files from the resources
qt5_add_resources(QRCS resources.qrc)
add_library(window mainwindow.cpp)
target_link_libraries(window Qt5::Widgets)
# Tell CMake to create the helloworld executable
#add_executable(helloworld main.cpp mainwindow.cpp ${UI_HEADERS} ${QRCS})
add_executable(helloworld main.cpp ${UI_HEADERS})
# Add the Qt5 Widgets for linking
target_link_libraries(helloworld window Qt5::Widgets)
我找到了解决方案。 行 add_library(窗口主窗口.cpp)

应更改为 add_library(窗口主窗口.cpp ${UI_HEADERS})

相关内容

  • 没有找到相关文章

最新更新