预制 (lua) pch create /Yc Visual Studio

Premake (lua) pch create /Yc Visual Studio

在我的解决方案的预制 lua 脚本中。我如何将其设置为在第一次初始化时创建“/Yc”而不是设置为使用“/Yu”。

我搜索了联机文档并尝试了其他帮助站点。我找不到任何帮助。

我认为这是一个构建选项,但已经尝试过 buildoptions { "/Yc" }

一些帮助会更合适吗?

您需要指定

pchheader('StdAfx.h')

pchsource('StdAfx.cpp') 

解决方法是设置正确的源文件路径。

premake5.lua

pchheader "awepch.h"
pchsource "%{prj.name}/Src/awepch.cpp" // this is where the source file is located on disk

* 此外,您还必须使用正确的字符大小写。如果您使用 "pch.h" 作为磁盘上的文件名,则该文件名必须是 "premake5.lua" 脚本

这一部分中的文件名

很抱歉花了这么长时间才给出答案:)

对于当前版本的 premake v5. 0.0-beta1,您必须执行以下操作才能使预编译头文件在所有 IDE 中工作(尤其是 Visual Studio):

  1. pch.hpch.cpp都放在项目的根目录下(不是solution/workspace)。

  2. pch.h 的确切名称(不是路径)设置为 pchheader()

  3. 设置pch.cpp相对于premake5.lua脚本的完整路径pchsource()。这是重要。我不知道为什么,但是如果你没有指定完整的相对路径,那么 premake 将 Use (/Yu) (use precompiled header) to the phc.cpp instead of Create (/Yc)(创建预编译头),导致在Visual Studio.[=24=中没有创建预编译头]

  4. 包括pch.hpch.cpp所在的目录includedirs()

  5. #include "pch.h" 在项目中的每个 .cpp 文件中,IN每个 .cpp 文件的第一行。请记住:#include "pch.h""pch.h" 必须与您在 [= 中设置的 pchheader() 中的字符串完全相同90=] 脚本.

  6. 如果您有 .c 文件,您 必须 将它们重命名为 .cpp,否则 Visual Studio 会抱怨使用了使用 C++ 编译器编译的预编译头文件。

我知道这太复杂了,但事实就是如此。

示例:

project "LearnGL"
    location "Projects/LearnGL/"
    kind "ConsoleApp"
    language "C++"
    targetdir "builds/"
    objdir "obj/%{prj.name}_%{cfg.shortname}"

    pchheader "pch.h" --Do not use paths here. Use directly the header file name
    pchsource "Projects/LearnGL/src/pch.cpp" --Full path MUST be specified relative to the premake5.lua (this) script.

    files {
        "Projects/LearnGL/src/**.h",
        "Projects/LearnGL/src/**.hpp",
        "Projects/LearnGL/src/**.cpp"
    }

    includedirs {
        "Projects/LearnGL/src/", --This is where pch.h and pch.cpp are located.
        "Projects/LearnGL/src/external/glad/include/",
        "Projects/LearnGL/src/external/stb_image/include/",
        "External/glfw/include/",
        "External/spdlog/include/"
    }