使用Visual Studio和cmake在* .ui文件更改时自动移动

时间:2018-10-31 15:57:33

标签: c++ visual-studio qt cmake

我有一个qt项目,该项目由cmake管理,并为Visual Studio 2015生成一个* .sln文件。

我使用

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

告诉cmake,它应该在构建过程开始时就uic和moc。现在,每次更改用Q_OBJECT声明的类时,都会调用moc,并且每次更改类(包括ui _ *。h文件)时,都会执行uic。所以到目前为止一切都很好。

当我仅从qt uic更改* .ui文件时,应调用moc,但Visual Studio无法识别它应生成automoc / autouic。

当* .ui文件更改时,如何才能实现uic / moc的调用?

其他信息: 这是我告诉cmake生成可执行文件的方式。

add_executable(program ${pro_SRCS} ${pro_HDRS} ${pro_UI})

SRCS变量中是我所有的* .cpp文件,在HDRS中是我的* .h文件,在UI中都是我的* .ui文件。我知道我只需要SRCS,但是我希望所有文件都显示在Visual Studio中。

CMakeLists.txt示例:

cmake_minimum_required (VERSION 3.1.0)

project (project)

set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT project)

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

set(CMAKE_SUPPRESS_REGENERATION true)

if(CMAKE_CONFIGURATION_TYPES)
  set(CMAKE_CONFIGURATION_TYPES Debug Release)
  set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING
    "Configurate Debug and Release build."
    FORCE)
endif()

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

find_package(
        Qt5
        COMPONENTS
                Widgets
                OpenGL 
                PrintSupport
        CONFIG 
        REQUIRED)


# Populate a CMake variable with the sources
set(pro_SRCS
        main.cpp
        ...
)

set(pro_HDRS
        header.h
        ...
)

set(pro_UI
        ui/main.ui
)

add_executable(pro ${pro_SRCS} ${pro_HDRS} ${pro_UI})

# Use the Widgets module from Qt 5
if (MSVC)
   target_link_libraries(VisuTool Qt5::Widgets Qt5::OpenGL Qt5::PrintSupport glu32 opengl32)
endif(MSVC)


# show ui files in visual studio
source_group("UI Files" FILES ${pro_UI})

0 个答案:

没有答案