Commit 0c55729c authored by Brad King's avatar Brad King

VS: Add CMAKE_VS_(DEVENV|MSBUILD|MSDEV)_COMMAND variables

Since commit 5f5c92b9 (VS: Add internal APIs to find MSBuild,
devenv/VCExpress, and msdev, 2013-11-13) the VS generators have
known how to lookup the locations of their build tools directly.
Expose this information to CMake language code by defining new
variables to hold the paths to these tools.
parent 4cce44b6
......@@ -65,7 +65,10 @@ Variables that Provide Information
/variable/CMAKE_TWEAK_VERSION
/variable/CMAKE_VERBOSE_MAKEFILE
/variable/CMAKE_VERSION
/variable/CMAKE_VS_DEVENV_COMMAND
/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
/variable/CMAKE_VS_MSBUILD_COMMAND
/variable/CMAKE_VS_MSDEV_COMMAND
/variable/CMAKE_VS_PLATFORM_TOOLSET
/variable/CMAKE_XCODE_PLATFORM_TOOLSET
/variable/PROJECT_BINARY_DIR
......
......@@ -29,6 +29,10 @@ to configure the project:
* The Visual Studio generators set this to the full path to
``MSBuild.exe`` (VS >= 10), ``devenv.com`` (VS 7,8,9),
``VCExpress.exe`` (VS Express 8,9), or ``msdev.exe`` (VS 6).
(See also variables
:variable:`CMAKE_VS_MSBUILD_COMMAND`,
:variable:`CMAKE_VS_DEVENV_COMMAND`, and
:variable:`CMAKE_VS_MSDEV_COMMAND`.)
These generators prefer to lookup the build tool at build time
rather than to store ``CMAKE_MAKE_PROGRAM`` in the CMake cache
......
CMAKE_VS_DEVENV_COMMAND
-----------------------
The generators for :generator:`Visual Studio 7` and above set this
variable to the ``devenv.com`` command installed with the corresponding
Visual Studio version. Note that this variable may be empty on
Visual Studio Express editions because they do not provide this tool.
This variable is not defined by other generators even if ``devenv.com``
is installed on the computer.
The :variable:`CMAKE_VS_MSBUILD_COMMAND` is also provided for
:generator:`Visual Studio 10 2010` and above.
See also the :variable:`CMAKE_MAKE_PROGRAM` variable.
CMAKE_VS_MSBUILD_COMMAND
------------------------
The generators for :generator:`Visual Studio 10 2010` and above set this
variable to the ``MSBuild.exe`` command installed with the corresponding
Visual Studio version.
This variable is not defined by other generators even if ``MSBuild.exe``
is installed on the computer.
The :variable:`CMAKE_VS_DEVENV_COMMAND` is also provided for the
non-Express editions of Visual Studio.
See also the :variable:`CMAKE_MAKE_PROGRAM` variable.
CMAKE_VS_MSDEV_COMMAND
----------------------
The :generator:`Visual Studio 6` generator sets this variable to the
``msdev.exe`` command installed with Visual Studio 6.
This variable is not defined by other generators even if ``msdev.exe``
is installed on the computer.
See also the :variable:`CMAKE_MAKE_PROGRAM` variable.
......@@ -255,6 +255,14 @@ std::string cmGlobalVisualStudio10Generator::GetUserMacrosRegKeyBase()
return "Software\\Microsoft\\VisualStudio\\10.0\\vsmacros";
}
//----------------------------------------------------------------------------
void cmGlobalVisualStudio10Generator::FindMakeProgram(cmMakefile* mf)
{
this->cmGlobalVisualStudio8Generator::FindMakeProgram(mf);
mf->AddDefinition("CMAKE_VS_MSBUILD_COMMAND",
this->GetMSBuildCommand().c_str());
}
//----------------------------------------------------------------------------
std::string const& cmGlobalVisualStudio10Generator::GetMSBuildCommand()
{
......
......@@ -91,6 +91,8 @@ public:
virtual const char* GetToolsVersion() { return "4.0"; }
virtual void FindMakeProgram(cmMakefile*);
protected:
virtual const char* GetIDEVersion() { return "10.0"; }
......
......@@ -77,6 +77,14 @@ void cmGlobalVisualStudio6Generator::GenerateConfigurations(cmMakefile* mf)
}
}
//----------------------------------------------------------------------------
void cmGlobalVisualStudio6Generator::FindMakeProgram(cmMakefile* mf)
{
this->cmGlobalVisualStudioGenerator::FindMakeProgram(mf);
mf->AddDefinition("CMAKE_VS_MSDEV_COMMAND",
this->GetMSDevCommand().c_str());
}
//----------------------------------------------------------------------------
std::string const& cmGlobalVisualStudio6Generator::GetMSDevCommand()
{
......
......@@ -89,6 +89,8 @@ public:
///! What is the configurations directory variable called?
virtual const char* GetCMakeCFGIntDir() const { return "$(IntDir)"; }
virtual void FindMakeProgram(cmMakefile*);
protected:
virtual const char* GetIDEVersion() { return "6.0"; }
private:
......
......@@ -110,6 +110,14 @@ void cmGlobalVisualStudio7Generator
}
//----------------------------------------------------------------------------
void cmGlobalVisualStudio7Generator::FindMakeProgram(cmMakefile* mf)
{
this->cmGlobalVisualStudioGenerator::FindMakeProgram(mf);
mf->AddDefinition("CMAKE_VS_DEVENV_COMMAND",
this->GetDevEnvCommand().c_str());
}
//----------------------------------------------------------------------------
std::string const& cmGlobalVisualStudio7Generator::GetDevEnvCommand()
{
......
......@@ -107,6 +107,8 @@ public:
const char* GetIntelProjectVersion();
virtual void FindMakeProgram(cmMakefile*);
protected:
virtual const char* GetIDEVersion() { return "7.0"; }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment