|
|
@ -22,8 +22,11 @@ |
|
|
|
#include "cmake.h"
|
|
|
|
|
|
|
|
#include <cmsys/FStream.hxx>
|
|
|
|
#include <cmsys/Glob.hxx>
|
|
|
|
#include <cmsys/RegularExpression.hxx>
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
|
|
|
|
static const char vs10generatorName[] = "Visual Studio 10 2010"; |
|
|
|
|
|
|
|
// Map generator name without year to name with year.
|
|
|
@ -160,6 +163,13 @@ bool cmGlobalVisualStudio10Generator::SetGeneratorPlatform( |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
static void cmCudaToolVersion(std::string& s) |
|
|
|
{ |
|
|
|
// "CUDA x.y.props" => "x.y"
|
|
|
|
s = s.substr(5); |
|
|
|
s = s.substr(0, s.size() - 6); |
|
|
|
} |
|
|
|
|
|
|
|
bool cmGlobalVisualStudio10Generator::SetGeneratorToolset( |
|
|
|
std::string const& ts, cmMakefile* mf) |
|
|
|
{ |
|
|
@ -180,6 +190,23 @@ bool cmGlobalVisualStudio10Generator::SetGeneratorToolset( |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
if (this->GeneratorToolsetCuda.empty()) { |
|
|
|
// Find the highest available version of the CUDA tools.
|
|
|
|
std::vector<std::string> cudaTools; |
|
|
|
std::string const bcDir = this->VCTargetsPath + "/BuildCustomizations"; |
|
|
|
cmsys::Glob gl; |
|
|
|
gl.SetRelative(bcDir.c_str()); |
|
|
|
if (gl.FindFiles(bcDir + "/CUDA *.props")) { |
|
|
|
cudaTools = gl.GetFiles(); |
|
|
|
} |
|
|
|
if (!cudaTools.empty()) { |
|
|
|
std::for_each(cudaTools.begin(), cudaTools.end(), cmCudaToolVersion); |
|
|
|
std::sort(cudaTools.begin(), cudaTools.end(), |
|
|
|
cmSystemTools::VersionCompareGreater); |
|
|
|
this->GeneratorToolsetCuda = cudaTools.at(0); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (const char* toolset = this->GetPlatformToolset()) { |
|
|
|
mf->AddDefinition("CMAKE_VS_PLATFORM_TOOLSET", toolset); |
|
|
|
} |
|
|
|