From a22f9967252eecbbd00c9adc1f07ecab9f15e53e Mon Sep 17 00:00:00 2001 From: Andrej Bosik Date: Mon, 15 Feb 2016 13:02:50 +0100 Subject: [PATCH] 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. --- Help/manual/cmake-properties.7.rst | 1 + Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst | 18 +++++++++++++ Help/release/dev/vs-remote-directory.rst | 7 +++++ Source/cmLocalVisualStudio7Generator.cxx | 26 +++++++++++++++++++ Source/cmLocalVisualStudio7Generator.h | 3 +++ 5 files changed, 55 insertions(+) create mode 100644 Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst create mode 100644 Help/release/dev/vs-remote-directory.rst diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst index d6618fe89..fbde4eb68 100644 --- a/Help/manual/cmake-properties.7.rst +++ b/Help/manual/cmake-properties.7.rst @@ -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 diff --git a/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst b/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst new file mode 100644 index 000000000..1ff5bf01e --- /dev/null +++ b/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst @@ -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:: + + + diff --git a/Help/release/dev/vs-remote-directory.rst b/Help/release/dev/vs-remote-directory.rst new file mode 100644 index 000000000..194236d11 --- /dev/null +++ b/Help/release/dev/vs-remote-directory.rst @@ -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. diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index adfbe2aaf..3e5611be9 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -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\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\tEscapeForXML(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\tEscapeForXML(exe) << "\"\n" + "\t\t\t\tArguments=\"\"\n" + "\t\t\t/>\n" + ; + } + } +} + //---------------------------------------------------------------------------- void cmLocalVisualStudio7Generator diff --git a/Source/cmLocalVisualStudio7Generator.h b/Source/cmLocalVisualStudio7Generator.h index 7bb9cc6a0..562f4852b 100644 --- a/Source/cmLocalVisualStudio7Generator.h +++ b/Source/cmLocalVisualStudio7Generator.h @@ -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 const& dirs); void WriteProjectSCC(std::ostream& fout, cmGeneratorTarget *target);