Переменная окружения, используемая CMake для обнаружения инструментов компилятора Visual C++ для ниндзя
У меня Mingw64 GCC 6.3.0 (всегда в PATH
) и инструменты компилятора Visual C++ из Visual Studio 2017 RTM (не в PATH
).
Если я бегу cmake . -G "MinGW Makefiles"
, GCC 6.3.0 будет выбран.
Если я бегу cmake . -G "Ninja"
, GCC 6.3.0 будет выбран.
Мои инструменты компилятора Visual C++ не являются стандартными, я оставляю только те части, которые мне нужны, и удаляю остальные (например, MSBuild, IDE и т. Д.). Я использую свой собственный пакетный скрипт для настройки PATH
, INCLUDE
а также LIB
(работает просто отлично).
Если я запускаю этот пакетный скрипт и запускаю cmake .
, MSVC будет выбран и построен с NMake.
В той же среде, cmake . -G "Ninja"
, GCC 6.3.0 выбран вместо MSVC.
Итак, мой вопрос, как сказать CMake, что я хочу использовать MSVC + Ninja, а не GCC + Ninja, когда оба находятся в PATH
? Любую переменную среды, которую я должен установить?
2 ответа
Вы также можете использовать инвертированный подход и исключить все компиляторы, которые вам не нужны CMAKE_IGNORE_PATH
, Требуется игнорировать список путей, но имейте в виду, что это должно быть точное совпадение строк. Преимущество состоит в том, что вы можете объявить их непосредственно из командной строки.
Так что я сделал, чтобы взять путь из найденного компилятора, но "не быть принятым" в CMAKE_IGNORE_PATH
,
И на моей системе было три компилятора GCC в моем PATH
(просто убедитесь, что вы начинаете с пустой директории двоичного вывода при каждой попытке):
> 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
...
Использовать файл toolchain
set(CMAKE_C_COMPILER cl.exe)
set(CMAKE_CXX_COMPILER cl.exe)
затем создайте свой проект cmake с помощью -DCMAKE_TOOLCHAIN_FILE=toolchainfile