Variable de entorno utilizada por CMake para detectar las herramientas del compilador de Visual C++ para Ninja
(2)
Tengo Mingw64 GCC 6.3.0 (siempre en
PATH
) y herramientas de compilación de Visual C ++ de Visual Studio 2017 RTM (no en
PATH
).
Si corro
cmake . -G "MinGW Makefiles"
cmake . -G "MinGW Makefiles"
, se seleccionará GCC 6.3.0.
Si corro
cmake . -G "Ninja"
cmake . -G "Ninja"
, se seleccionará GCC 6.3.0.
Mis herramientas de compilación de Visual C ++ no son estándar, solo guardo las partes que necesito y elimino el resto (como MSBuild, IDE, etc.).
Utilizo mi propio script por lotes para configurar
PATH
,
INCLUDE
y
LIB
(funciona bien).
Si ejecuto este script por lotes y ejecuto
cmake .
, MSVC será seleccionado y construido 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 debería establecer?
También puede usar el enfoque invertido y excluir todos los compiladores 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 puede declararlos directamente desde la línea de comandos.
Entonces, lo que hice fue tomar el camino desde el compilador encontrado pero "no ser tomado" en
CMAKE_IGNORE_PATH
.
Y en mi sistema en realidad había tres compiladores GCC en mi
PATH
(solo asegúrese de comenzar desde un directorio de salida binario vacío con cada intento):
> 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 cadena de herramientas
set(CMAKE_C_COMPILER cl.exe)
set(CMAKE_CXX_COMPILER cl.exe)
luego construya su proyecto cmake con -DCMAKE_TOOLCHAIN_FILE = toolchainfile