预制 (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):
把pch.h
和pch.cpp
都放在项目的根目录下(不是solution/workspace)。
将 pch.h 的确切名称(不是路径)设置为 pchheader()
。
设置pch.cpp
相对于premake5.lua脚本的完整路径pchsource()
。这是重要。我不知道为什么,但是如果你没有指定完整的相对路径,那么 premake 将 Use (/Yu) (use precompiled header) to the phc.cpp
instead of Create (/Yc)(创建预编译头),导致在Visual Studio.[=24=中没有创建预编译头]
包括pch.h
和pch.cpp
所在的目录includedirs()
#include "pch.h"
在项目中的每个 .cpp 文件中,IN每个 .cpp 文件的第一行。请记住:#include "pch.h"
、"pch.h" 必须与您在 [= 中设置的 pchheader()
中的字符串完全相同90=] 脚本.
如果您有 .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/"
}
在我的解决方案的预制 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):
把
pch.h
和pch.cpp
都放在项目的根目录下(不是solution/workspace)。将 pch.h 的确切名称(不是路径)设置为
pchheader()
。设置
pch.cpp
相对于premake5.lua脚本的完整路径pchsource()
。这是重要。我不知道为什么,但是如果你没有指定完整的相对路径,那么 premake 将 Use (/Yu) (use precompiled header) to thephc.cpp
instead of Create (/Yc)(创建预编译头),导致在Visual Studio.[=24=中没有创建预编译头]包括
pch.h
和pch.cpp
所在的目录includedirs()
#include "pch.h"
在项目中的每个 .cpp 文件中,IN每个 .cpp 文件的第一行。请记住:#include "pch.h"
、"pch.h" 必须与您在 [= 中设置的pchheader()
中的字符串完全相同90=] 脚本.如果您有 .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/"
}