gpt4 book ai didi

visual-studio - cmake + qt + Visual Studio : moc objects on build

转载 作者:行者123 更新时间:2023-12-04 06:36:46 24 4
gpt4 key购买 nike

我正在使用 cmake + qt + visual studio 来处理一个项目。问题 我遇到的问题是,如果我修改 QT ui 文件,我希望 visual studio 创建新的 moc 对象。如果我只是完全构建所有工作文件,但如果我只是修改 ui 文件上的某些内容,它不会“auto moc”,我必须重建整个项目。

我的 cmake 文件非常简单:

cmake_minimum_required(VERSION 3.2)

set(CMAKE_VERBOSE_MAKEFILE ON)

project(main)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)

find_package(Qt5Widgets)

file(GLOB CPP_FILES *.cpp)

add_executable(main ${CPP_FILES})
target_link_libraries(main Qt5::Widgets)
target_compile_features(main PUBLIC cxx_nullptr)

有谁知道如何让它工作(让 visual studio 检测 ui 文件修改和“auto moc”修改后的 ui 文件)?

最佳答案

首先更换您的 file(GLOB ...)如果您想要正确的依赖关系处理,请明确列出您想要包含的文件。这也将确保构建为您期望的文件集创建依赖项。 This answer除以下原因外,还有更多关于您可能想要这样做的原因的详细信息。

CMake documentation for AUTOUIC包括这个声明:

If a preprocessor #include directive is found which matches ui_<basename>.h, and a <basename>.ui file exists, then uic will be executed to generate the appropriate file.

您能否确认您的 .cpp 源具有 #include遵循这种模式的指令?在你的file(GLOB ...)你只捕获 .cpp 文件而不是 .h 文件,所以如果你只有 #include header 中的指令,AUTOUIC 可能无法正确拾取它们。自从我使用它以来已经有一段时间了,我不记得如果你只列出 .cpp 文件而不是你的 add_executable() 中的标题,AUTOUIC 是否仍然能找到它们。打电话,但这是您可以尝试的事情。如果您有使用 Q_OBJECT 和 Q_GADGET 宏的 header ,您也可能面临与 AUTOMOC 类似的情况。因此,只需明确列出您提供给 add_executable() 的 .cpp 和 .h 文件即可。看看是否能解决您的问题。

关于visual-studio - cmake + qt + Visual Studio : moc objects on build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36434949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com