首页 > 解决方案 > 使用 premake 在 Visual Studio 中为 QT 生成/使用 moc 文件的问题

问题描述

我开始了一个Qt项目,我决定用它premake + conan来获得必要的东西。为了创建个人插槽,我必须Q_OBJECT在我的头文件中添加。我唯一的问题是创建moc文件。

我使用 github Addon来简化该Qt部分,除了在编译时,它给了我一个moc_Window.args文件,在 Visual Studio 中,当我启动解决方案时,它说我有一个文件应该与文件moc_Window.cpp位于同一位置.args. 但是当我尝试通过解决方案打开它时,它自然找不到,因此无法编译。

所以我的问题如下,这个.args文件的创建是一种常见的行为吗?我必须把它放在一个特定的文件夹中吗?为什么解决方案说我在解决方案中有一个moc文件,但文件夹中没有出现?

在编译时我有这个错误

Moc'ing Window.h 找不到访问路径。

这是我的premake.lua

include "build/conanbuildinfo.premake.lua"
include "premake-qt/qt.lua"

local qt = premake.extensions.qt

workspace "TileEditor"
    conan_basic_setup()

    configurations
    {
        "Debug",
        "Release",
        "Dist"
    }

outputdir = "%{cfg.buildcfg}-%{cfg.system}-%{cfg.architecture}"

project "TileEditor"
    location "TileEditor"
    kind "ConsoleApp"
    language "C++"

    qt.enable()
    qtpath("../build")
    qtincludepath("../build/include")
    qtlibpath("../build/lib")
    qtbinpath("../build/bin")
    qtprefix "Qt6"
    qtmodules {"core", "gui", "opengl", "widgets"}
    qtgenerateddir "src/include/window"

    targetdir ("bin/" .. outputdir .. "/%{prj.name}")
    objdir ("bin-obj/" .. outputdir .. "/%{prj.name}")

    linkoptions { conan_exelinkflags }

    files
    {
        "**.h", "**.cpp"
    }

    configuration "windows"
        cppdialect "C++17"

        postbuildcommands {
            "{COPY} ../build/bin/Qt6Core.dll %{cfg.targetdir}",
            "{COPY} ../build/bin/Qt6Gui.dll %{cfg.targetdir}",
            "{COPY} ../build/bin/Qt6Widgets.dll %{cfg.targetdir}",
            "{COPYDIR} ../build/bin/ %{cfg.targetdir}"
        }

标签: qtpremake

解决方案


推荐阅读