summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorGilles Khouzam <gillesk@microsoft.com>2014-12-02 21:32:45 (GMT)
committerBrad King <brad.king@kitware.com>2014-12-03 14:31:59 (GMT)
commit352f246f3ebfd8daf5fda9bad2db01b56fa4bf4d (patch)
tree90316933aa4d550d79cf95e3b32e7d38b1324585 /Source
parent2a224b4ce3fcc3c25bb3f56cf50806ae79262fc2 (diff)
downloadCMake-352f246f3ebfd8daf5fda9bad2db01b56fa4bf4d.zip
CMake-352f246f3ebfd8daf5fda9bad2db01b56fa4bf4d.tar.gz
CMake-352f246f3ebfd8daf5fda9bad2db01b56fa4bf4d.tar.bz2
VS: Add source file property to specify Windows App deployment location
Add a VS_DEPLOYMENT_LOCATION source file property to specify where to put files that are part of the package. For example: set_property(SOURCE ${ASSET_FILES} PROPERTY VS_DEPLOYMENT_LOCATION "assets") Without this, sources marked with VS_DEPLOYMENT_CONTENT cannot be located properly.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx15
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 4fbd8fd..832b2f6 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -1261,6 +1261,7 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
}
std::string deployContent;
+ std::string deployLocation;
if(this->GlobalGenerator->TargetsWindowsPhone() ||
this->GlobalGenerator->TargetsWindowsStore())
{
@@ -1269,6 +1270,12 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
{
toolHasSettings = true;
deployContent = content;
+
+ const char* location = sf->GetProperty("VS_DEPLOYMENT_LOCATION");
+ if(location && *location)
+ {
+ deployLocation = location;
+ }
}
}
@@ -1283,6 +1290,14 @@ void cmVisualStudio10TargetGenerator::WriteExtraSource(cmSourceFile const* sf)
cmGeneratorExpression ge;
cmsys::auto_ptr<cmCompiledGeneratorExpression> cge =
ge.Parse(deployContent);
+ // Deployment location cannot be set on a configuration basis
+ if(!deployLocation.empty())
+ {
+ this->WriteString("<Link>", 3);
+ (*this->BuildFileStream) << deployLocation
+ << "\\%(FileName)%(Extension)";
+ this->WriteString("</Link>\n", 0);
+ }
for(size_t i = 0; i != configs->size(); ++i)
{
if(0 == strcmp(cge->Evaluate(this->Makefile, (*configs)[i]), "1"))