更改.ui文件不会使用cmake 3.6重新生成ui_xxx.h

时间:2017-02-27 00:24:39

标签: windows cmake qt5

我有一个简单的设置,包括main.cpp,mainwindows.cpp,mainwindow.h和mainwindow.ui以及这个cmake文件:

➜  lib pwd
/usr/local/Cellar/hive/2.1.0/libexec/lib
➜  lib ll | grep hadoop-common
-rw-r--r--  1 christian  admin   3.1M Sep  3 07:29 hadoop-common-2.6.0.jar

ui_xxx.h是第一次构建项目时生成的,如果.ui文件和源文件之一被更改,则重新生成。我想要的是让ui_xxx.h每次都重新生成.ui文件在有或没有源更改时更改。

我看过https://github.com/euler0/mini-cmake-qt但是example_automoc项目总是过时的,而且总是要求重建项目。

我的cmake文件中有什么问题吗?或者它是cmake中的错误?

注意:我使用Visual Studio 14 2015生成器在Windows 10上使用qt 5.8和cmake 3.6

更新:删除set(CMAKE_AUTOUIC ON)并使用以下命令指定ui文件:

cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
project(test_qt_with_cmake)

set(CMAKE_CXX_STANDARD 11) # use c++11

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_PREFIX_PATH "C:/Qt/5.8/msvc2015_64")

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

find_package(Qt5Widgets)

set(PROJECT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}")

######## PROJECT DEPENDENCIES #########
if(WIN32)
    set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${PROJECT_SOURCE_DIR}/windows)
endif()

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake")

#=====================================

include_directories(
    ${PROJECT_INCLUDE_DIR}
)

add_executable(test_qt WIN32 main.cpp mainwindow.cpp mainwindow.h)
target_link_libraries(test_qt Qt5::Widgets)

add_custom_command(TARGET test_qt POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory
        "${PROJECT_SOURCE_DIR}/windows/bin"
        $<TARGET_FILE_DIR:test_qt>)

似乎解决了这个问题。原始问题仍然有效,这是如何在不指定.ui文件的情况下完成此工作(通过调用qt5_wrap_ui)?

0 个答案:

没有答案