(これは、Web サイトでダウンロードできる Premake5 アルファ バイナリを使用しています)
既存の VS ソリューションを premake5 を使用するように移植しようとしています。
MS スタイルのプリコンパイル済みヘッダー (stdafx.h/stdafx.cpp) を使用します。
これをテスト プロジェクトとして指定すると、次のようになります。
pchheader "stdafx.h"
pchsource "stdafx.cpp"
プリコンパイル済みヘッダーを使用するようにプロジェクトを設定しますが、プリコンパイル済みヘッダー (/Yc) を生成するように stdafx.cpp を設定していません。代わりに、プロジェクト内のすべてのファイルが使用しようとしており (/Yu)、誰も PCH を生成していません。だから建たない..
これは何とか機能すると思いますが、ここで欠けている黒魔術は何ですか?
ここに、参照用の私の premake5 ファイル全体があります
-- premake5.lua
solution "Cloud"
configurations { "Debug", "Release", "Final" }
platforms { "Win32_AVX2", "Win64_AVX2"}
location "premake"
flags{"MultiProcessorCompile", "ExtraWarnings", "FatalCompileWarnings", "FatalLinkWarnings", "FloatFast"}
startproject "Cloud"
vectorextensions "AVX2"
filter { "platforms:Win32" }
system "Windows"
architecture "x32"
filter { "platforms:Win64" }
system "Windows"
architecture "x64"
filter "configurations:Debug"
defines { "DEBUG" }
flags { "Symbols" }
filter "configurations:Release"
defines { "NDEBUG" }
flags{"Symbols"}
optimize "Speed"
filter "configurations:Final"
defines { "NDEBUG" }
flags{"LinkTimeOptimization"}
optimize "Speed"
group "app"
--primary executable
project "Cloud"
location "../src_test/cloud"
kind "ConsoleApp"
language "C++"
targetdir "..//%{cfg.buildcfg}"
pchheader "stdafx.h"
pchsource "stdafx.cpp"
vpaths{
{["src/pch/*"] = "../src_test/cloud/stdafx.*"},
{["src/*"] = "../src_test/cloud/**.cpp"},
{["module/*"] = "../src_test/cloud/Module*.h"},
{["core/*"] = "../src_test/cloud/Core*.h"},
{["headers*"] = "../src_test/cloud/*.h"},
--{["src_c/*"] = "../src_test/cloud/**.c"}
}
files { "../src_test/cloud/*.h", "../src_test/cloud/*.c", "../src_test/cloud/*.cpp", "../src_test/cloud/*.hpp" }
関連する質問の 1 つ: プロジェクト内の特定のファイルでプリコンパイル済みヘッダーの使用を無効にするにはどうすればよいですか? PCH が含まれていると一部のファイルがビルドされないため、既存のソリューション/プロジェクトでそれらを手動で無効にしました。
ありがとう!