VS: Optionally generate remote directory for WinCE projects

Teach the VS 2008 and 2005 generators to set the `RemoteDirectory`
in `DeploymentTool` and the `RemoteExecutable` in `DebuggerTool`.
Use a `DEPLOYMENT_REMOTE_DIRECTORY` target property to specify the
value.
This commit is contained in:
Andrej Bosik 2016-02-15 13:02:50 +01:00 committed by Brad King
parent 1d4ab06a70
commit a22f996725
5 changed files with 55 additions and 0 deletions

View File

@ -141,6 +141,7 @@ Properties on Targets
/prop_tgt/CXX_STANDARD_REQUIRED
/prop_tgt/DEBUG_POSTFIX
/prop_tgt/DEFINE_SYMBOL
/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY
/prop_tgt/EchoString
/prop_tgt/ENABLE_EXPORTS
/prop_tgt/EXCLUDE_FROM_ALL

View File

@ -0,0 +1,18 @@
DEPLOYMENT_REMOTE_DIRECTORY
---------------------------
Set the WinCE project ``RemoteDirectory`` in ``DeploymentTool`` and
``RemoteExecutable`` in ``DebuggerTool`` in ``.vcproj`` files generated
by the :generator:`Visual Studio 9 2008` and :generator:`Visual Studio 8 2005`
generators. This is useful when you want to debug on remote WinCE device.
For example:
.. code-block:: cmake
set_property(TARGET ${TARGET} PROPERTY
DEPLOYMENT_REMOTE_DIRECTORY "\\FlashStorage")
produces::
<DeploymentTool RemoteDirectory="\FlashStorage" ... />
<DebuggerTool RemoteExecutable="\FlashStorage\target_file" ... />

View File

@ -0,0 +1,7 @@
vs-remote-directory
-------------------
* The :generator:`Visual Studio 9 2008` and :generator:`Visual Studio 8 2005`
generators learned to generate the remote directory for WinCE project
deployment and debugger settings. See the
:prop_tgt:`DEPLOYMENT_REMOTE_DIRECTORY` target property.

View File

@ -1012,6 +1012,7 @@ void cmLocalVisualStudio7Generator::WriteConfiguration(std::ostream& fout,
this->OutputTargetRules(fout, configName, target, libName);
this->OutputBuildTool(fout, configName, target, targetOptions);
this->OutputDeploymentDebuggerTool(fout, configName, target);
fout << "\t\t</Configuration>\n";
}
@ -1374,6 +1375,31 @@ void cmLocalVisualStudio7Generator::OutputBuildTool(std::ostream& fout,
}
}
void cmLocalVisualStudio7Generator::OutputDeploymentDebuggerTool(
std::ostream& fout, std::string const& config, cmGeneratorTarget* target)
{
if (this->WindowsCEProject)
{
if (const char* dir = target->GetProperty("DEPLOYMENT_REMOTE_DIRECTORY"))
{
fout <<
"\t\t\t<DeploymentTool\n"
"\t\t\t\tForceDirty=\"-1\"\n"
"\t\t\t\tRemoteDirectory=\"" << this->EscapeForXML(dir) << "\"\n"
"\t\t\t\tRegisterOutput=\"0\"\n"
"\t\t\t\tAdditionalFiles=\"\"/>\n"
;
std::string const exe = dir + std::string("\\") + target->GetFullName();
fout <<
"\t\t\t<DebuggerTool\n"
"\t\t\t\tRemoteExecutable=\"" << this->EscapeForXML(exe) << "\"\n"
"\t\t\t\tArguments=\"\"\n"
"\t\t\t/>\n"
;
}
}
}
//----------------------------------------------------------------------------
void
cmLocalVisualStudio7Generator

View File

@ -92,6 +92,9 @@ private:
const std::string& libName);
void OutputBuildTool(std::ostream& fout, const std::string& configName,
cmGeneratorTarget* t, const Options& targetOptions);
void OutputDeploymentDebuggerTool(std::ostream& fout,
std::string const& config,
cmGeneratorTarget* target);
void OutputLibraryDirectories(std::ostream& fout,
std::vector<std::string> const& dirs);
void WriteProjectSCC(std::ostream& fout, cmGeneratorTarget *target);