VS: Use custom MSBuild.exe location
We are using custom location for msbuild.exe
. However, CMake always takes msbuild.exe
path from registry and override my property value.
bool cmGlobalVisualStudio10Generator::FindMakeProgram(cmMakefile* mf)
{
if (!this->cmGlobalVisualStudio8Generator::FindMakeProgram(mf)) {
return false;
}
mf->AddDefinition("CMAKE_VS_MSBUILD_COMMAND",
this->GetMSBuildCommand().c_str());
return true;
}
std::string const& cmGlobalVisualStudio10Generator::GetMSBuildCommand()
{
if (!this->MSBuildCommandInitialized) {
this->MSBuildCommandInitialized = true;
this->MSBuildCommand = this->FindMSBuildCommand();
}
return this->MSBuildCommand;
}
std::string cmGlobalVisualStudio10Generator::FindMSBuildCommand()
{
std::string msbuild;
std::string mskey;
// Search in standard location.
mskey = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\MSBuild\\ToolsVersions\\";
mskey += this->GetToolsVersion();
mskey += ";MSBuildToolsPath";
if (cmSystemTools::ReadRegistryValue(mskey.c_str(), msbuild,
cmSystemTools::KeyWOW64_32)) {
cmSystemTools::ConvertToUnixSlashes(msbuild);
msbuild += "/MSBuild.exe";
if (cmSystemTools::FileExists(msbuild, true)) {
return msbuild;
}
}
msbuild = "MSBuild.exe";
return msbuild;
}
Could you please add the feature to set custom CMAKE_VS_MSBUILD_COMMAND
property through -D CMAKE_VS_MSBUILD_COMMAND:FILEPATH=<path here>
command line option and store it in CMakeCache.txt
?