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.
This commit is contained in:
Brad King 2013-12-04 10:35:04 -05:00
parent 4cce44b6c5
commit 0c55729c13
11 changed files with 74 additions and 0 deletions

View File

@ -65,7 +65,10 @@ Variables that Provide Information
/variable/CMAKE_TWEAK_VERSION /variable/CMAKE_TWEAK_VERSION
/variable/CMAKE_VERBOSE_MAKEFILE /variable/CMAKE_VERBOSE_MAKEFILE
/variable/CMAKE_VERSION /variable/CMAKE_VERSION
/variable/CMAKE_VS_DEVENV_COMMAND
/variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION /variable/CMAKE_VS_INTEL_Fortran_PROJECT_VERSION
/variable/CMAKE_VS_MSBUILD_COMMAND
/variable/CMAKE_VS_MSDEV_COMMAND
/variable/CMAKE_VS_PLATFORM_TOOLSET /variable/CMAKE_VS_PLATFORM_TOOLSET
/variable/CMAKE_XCODE_PLATFORM_TOOLSET /variable/CMAKE_XCODE_PLATFORM_TOOLSET
/variable/PROJECT_BINARY_DIR /variable/PROJECT_BINARY_DIR

View File

@ -29,6 +29,10 @@ to configure the project:
* The Visual Studio generators set this to the full path to * The Visual Studio generators set this to the full path to
``MSBuild.exe`` (VS >= 10), ``devenv.com`` (VS 7,8,9), ``MSBuild.exe`` (VS >= 10), ``devenv.com`` (VS 7,8,9),
``VCExpress.exe`` (VS Express 8,9), or ``msdev.exe`` (VS 6). ``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 These generators prefer to lookup the build tool at build time
rather than to store ``CMAKE_MAKE_PROGRAM`` in the CMake cache rather than to store ``CMAKE_MAKE_PROGRAM`` in the CMake cache

View File

@ -0,0 +1,14 @@
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.

View File

@ -0,0 +1,13 @@
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.

View File

@ -0,0 +1,10 @@
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.

View File

@ -255,6 +255,14 @@ std::string cmGlobalVisualStudio10Generator::GetUserMacrosRegKeyBase()
return "Software\\Microsoft\\VisualStudio\\10.0\\vsmacros"; 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() std::string const& cmGlobalVisualStudio10Generator::GetMSBuildCommand()
{ {

View File

@ -91,6 +91,8 @@ public:
virtual const char* GetToolsVersion() { return "4.0"; } virtual const char* GetToolsVersion() { return "4.0"; }
virtual void FindMakeProgram(cmMakefile*);
protected: protected:
virtual const char* GetIDEVersion() { return "10.0"; } virtual const char* GetIDEVersion() { return "10.0"; }

View File

@ -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() std::string const& cmGlobalVisualStudio6Generator::GetMSDevCommand()
{ {

View File

@ -89,6 +89,8 @@ public:
///! What is the configurations directory variable called? ///! What is the configurations directory variable called?
virtual const char* GetCMakeCFGIntDir() const { return "$(IntDir)"; } virtual const char* GetCMakeCFGIntDir() const { return "$(IntDir)"; }
virtual void FindMakeProgram(cmMakefile*);
protected: protected:
virtual const char* GetIDEVersion() { return "6.0"; } virtual const char* GetIDEVersion() { return "6.0"; }
private: private:

View File

@ -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() std::string const& cmGlobalVisualStudio7Generator::GetDevEnvCommand()
{ {

View File

@ -107,6 +107,8 @@ public:
const char* GetIntelProjectVersion(); const char* GetIntelProjectVersion();
virtual void FindMakeProgram(cmMakefile*);
protected: protected:
virtual const char* GetIDEVersion() { return "7.0"; } virtual const char* GetIDEVersion() { return "7.0"; }