El siguiente es de la Fuente CMake (versión 2.8.4: cmake.cxx: línea de salida 2039):
// Try to find the newest VS installed on the computer and
// use that as a default if -G is not specified
std::string vsregBase =
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\";
struct VSRegistryEntryName
{
const char* MSVersion;
const char* GeneratorName;
};
VSRegistryEntryName version[] = {
{"6.0", "Visual Studio 6"},
{"7.0", "Visual Studio 7"},
{"7.1", "Visual Studio 7 .NET 2003"},
{"8.0", "Visual Studio 8 2005"},
{"9.0", "Visual Studio 9 2008"},
{"10.0", "Visual Studio 10"},
{0, 0}};
for(int i =0; version[i].MSVersion != 0; i++)
{
std::string reg = vsregBase + version[i].MSVersion;
reg += ";InstallDir]";
cmSystemTools::ExpandRegistryValues(reg);
if (!(reg == "/registry"))
{
installedCompiler = version[i].GeneratorName;
}
}
cmGlobalGenerator* gen
= this->CreateGlobalGenerator(installedCompiler.c_str());
if(!gen)
{
gen = new cmGlobalNMakeMakefileGenerator;
}
this->SetGlobalGenerator(gen);
std::cout << "-- Building for: " << gen->GetName() << "\n";
Parece que CMake se ve en el registro de Windows para determinar qué generador de usar. Busca las subclaves de registro de Visual Studio (6.0, 7.0, etc.) en [HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\
para una entrada llamada InstallDir
. Si se encuentra uno, usa el generador correspondiente. (Utilizará la versión más nueva de Visual Studio disponible.) De lo contrario, usa el generador NMake.
Tenga en cuenta que la entrada InstallDir
no siempre está presente, incluso cuando se instala una versión particular de Visual Studio. Esto puede tener que ver con la configuración de instalación o una versión particular de Visual Studio (por ejemplo, parece que las versiones "Express" de Visual C++ no agregan esta entrada).
Es posible, por supuesto, anular el valor predeterminado configurando al agregar -G {Generator Name}
al final de su comando CMake.
¿Es la misma versión de CMake? – rubenvb
Sí, la versión es 2.8.4 en ambas máquinas. – cfinley
De hecho, encontré una solución, pero no me permitirá publicarla durante otras siete horas ... <. < – cfinley