Variable de entorno utilizada por CMake para detectar herramientas de comstackdor de Visual C ++ para Ninja

Tengo Mingw64 GCC 6.3.0 (siempre en PATH ) y herramientas de comstackdor de Visual C ++ de Visual Studio 2017 RTM (no en PATH ).

Si ejecuto cmake . -G "MinGW Makefiles" cmake . -G "MinGW Makefiles" , se seleccionará GCC 6.3.0.

Si ejecuto cmake . -G "Ninja" cmake . -G "Ninja" , se seleccionará GCC 6.3.0.

Las herramientas del comstackdor de Visual C ++ no son estándar, solo guardo las piezas que necesito y elimino el rest (como MSBuild, IDE, etc.). Uso mi propio script por lotes para configurar PATH , INCLUDE y LIB (funciona bien).

Si ejecuto este script por lotes y ejecuto cmake . , Se seleccionará MSVC y se comstackrá con NMake.

Con el mismo entorno, cmake . -G "Ninja" cmake . -G "Ninja" , se selecciona GCC 6.3.0 en lugar de MSVC.

Entonces mi pregunta es, ¿cómo decirle a CMake que quiero usar MSVC + Ninja en lugar de GCC + Ninja cuando ambos están en PATH ? ¿Alguna variable de entorno que deba establecer?

También puede usar el enfoque invertido y excluir todos los comstackdores que no desee con CMAKE_IGNORE_PATH . Se necesita una lista de rutas para ignorar, pero tenga en cuenta que debe ser una coincidencia de cadena exacta. La ventaja sería que puedes declarar esos directamente desde la línea de comando.

Entonces, lo que hice fue tomar la ruta del comstackdor encontrado pero “no ser tomado” en CMAKE_IGNORE_PATH .

Y en mi sistema había en realidad tres comstackdores de GCC en mi PATH (solo asegúrese de comenzar desde un directorio de salida binario vacío con cada bash):

 > cmake -G"Ninja" .. ... -- Check for working C compiler: C:/MinGW/bin/cc.exe ... 

 > cmake -DCMAKE_IGNORE_PATH="C:/MinGW/bin" -G"Ninja" .. ... -- Check for working C compiler: C:/Strawberry/c/bin/gcc.exe ... 

 > cmake -DCMAKE_IGNORE_PATH="C:/MinGW/bin;C:/Strawberry/c/bin" -G"Ninja" .. ... -- Check for working C compiler: C:/Program Files (x86)/LLVM/bin/clang.exe ... 

 > cmake -DCMAKE_IGNORE_PATH="C:/MinGW/bin;C:/Strawberry/c/bin;C:/Program Files (x86)/LLVM/bin" -G"Ninja" .. ... -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/bin/cl.exe ... 

usar un archivo de toolchain

 set(CMAKE_C_COMPILER cl.exe) set(CMAKE_CXX_COMPILER cl.exe) 

luego crea tu proyecto cmake con -DCMAKE_TOOLCHAIN_FILE = toolchainfile