VS: Handle AppxManifest sources explicitly in generator
Teach cmGeneratorTarget to extract .appxmanifest sources separately. Teach cmVisualStudio10TargetGenerator to write them with the AppxManifest tool in .vcxproj files. This will allow us to detect whether the project provides an application manfiest explicitly.
This commit is contained in:
parent
bc373c6d32
commit
23782171ad
|
@ -53,6 +53,7 @@ struct ExternalObjectsTag {};
|
||||||
struct IDLSourcesTag {};
|
struct IDLSourcesTag {};
|
||||||
struct ResxTag {};
|
struct ResxTag {};
|
||||||
struct ModuleDefinitionFileTag {};
|
struct ModuleDefinitionFileTag {};
|
||||||
|
struct AppManifestTag{};
|
||||||
|
|
||||||
#if !defined(_MSC_VER) || _MSC_VER >= 1310
|
#if !defined(_MSC_VER) || _MSC_VER >= 1310
|
||||||
template<typename Tag, typename OtherTag>
|
template<typename Tag, typename OtherTag>
|
||||||
|
@ -195,6 +196,10 @@ struct TagVisitor
|
||||||
{
|
{
|
||||||
DoAccept<IsSameTag<Tag, ResxTag>::Result>::Do(this->Data, sf);
|
DoAccept<IsSameTag<Tag, ResxTag>::Result>::Do(this->Data, sf);
|
||||||
}
|
}
|
||||||
|
else if (ext == "appxmanifest")
|
||||||
|
{
|
||||||
|
DoAccept<IsSameTag<Tag, AppManifestTag>::Result>::Do(this->Data, sf);
|
||||||
|
}
|
||||||
else if(this->Header.find(sf->GetFullPath().c_str()))
|
else if(this->Header.find(sf->GetFullPath().c_str()))
|
||||||
{
|
{
|
||||||
DoAccept<IsSameTag<Tag, HeaderSourcesTag>::Result>::Do(this->Data, sf);
|
DoAccept<IsSameTag<Tag, HeaderSourcesTag>::Result>::Do(this->Data, sf);
|
||||||
|
@ -428,6 +433,15 @@ void cmGeneratorTarget
|
||||||
srcs = data.ResxSources;
|
srcs = data.ResxSources;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void
|
||||||
|
cmGeneratorTarget
|
||||||
|
::GetAppManifest(std::vector<cmSourceFile const*>& data,
|
||||||
|
const std::string& config) const
|
||||||
|
{
|
||||||
|
IMPLEMENT_VISIT(AppManifest);
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir,
|
bool cmGeneratorTarget::IsSystemIncludeDirectory(const std::string& dir,
|
||||||
const std::string& config) const
|
const std::string& config) const
|
||||||
|
|
|
@ -54,6 +54,8 @@ public:
|
||||||
const std::string& config) const;
|
const std::string& config) const;
|
||||||
void GetExpectedResxHeaders(std::set<std::string>&,
|
void GetExpectedResxHeaders(std::set<std::string>&,
|
||||||
const std::string& config) const;
|
const std::string& config) const;
|
||||||
|
void GetAppManifest(std::vector<cmSourceFile const*>&,
|
||||||
|
const std::string& config) const;
|
||||||
|
|
||||||
void ComputeObjectMapping();
|
void ComputeObjectMapping();
|
||||||
|
|
||||||
|
|
|
@ -1022,11 +1022,7 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
|
||||||
std::string tool = "None";
|
std::string tool = "None";
|
||||||
std::string shaderType;
|
std::string shaderType;
|
||||||
std::string const& ext = sf->GetExtension();
|
std::string const& ext = sf->GetExtension();
|
||||||
if(ext == "appxmanifest")
|
if(ext == "hlsl")
|
||||||
{
|
|
||||||
tool = "AppxManifest";
|
|
||||||
}
|
|
||||||
else if(ext == "hlsl")
|
|
||||||
{
|
{
|
||||||
tool = "FXCompile";
|
tool = "FXCompile";
|
||||||
// Figure out the type of shader compiler to use.
|
// Figure out the type of shader compiler to use.
|
||||||
|
@ -1221,6 +1217,10 @@ void cmVisualStudio10TargetGenerator::WriteAllSources()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<cmSourceFile const*> manifestSources;
|
||||||
|
this->GeneratorTarget->GetAppManifest(manifestSources, "");
|
||||||
|
this->WriteSources("AppxManifest", manifestSources);
|
||||||
|
|
||||||
std::vector<cmSourceFile const*> externalObjects;
|
std::vector<cmSourceFile const*> externalObjects;
|
||||||
this->GeneratorTarget->GetExternalObjects(externalObjects, "");
|
this->GeneratorTarget->GetExternalObjects(externalObjects, "");
|
||||||
for(std::vector<cmSourceFile const*>::iterator
|
for(std::vector<cmSourceFile const*>::iterator
|
||||||
|
|
Loading…
Reference in New Issue