#visual-studio #cmake #nvcc
#visual-studio #cmake #nvcc
Вопрос:
Я пытаюсь создать проект CMake с помощью Visual Studio (режим открытой папки). Для сборки проекта требуется Nvcc.
Я получаю следующую ошибку:
The CUDA compiler
"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1/bin/nvcc.exe"
is not able to compile a simple test program.
It fails with the following output:
Change Dir: [PROJECT_PATH]/build/Test_Release/CMakeFiles/CMakeTmp
Run Build Command:"C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/Ninja/ninja.exe" "cmTC_d4aa6"
[1/3] Building CUDA object CMakeFilescmTC_d4aa6.dirmain.cu.obj
FAILED: CMakeFiles/cmTC_d4aa6.dir/main.cu.obj
cmd.exe /C "C:PROGRA~1NVIDIA~2CUDAv10.1binnvcc.exe -x cu -c main.cu -o CMakeFilescmTC_d4aa6.dirmain.cu.obj amp;amp; C:PROGRA~1NVIDIA~2CUDAv10.1binnvcc.exe -x cu -M main.cu -MT CMakeFilescmTC_d4aa6.dirmain.cu.obj -o CMakeFilescmTC_d4aa6.dirmain.cu.obj.d"
nvcc fatal : Could not set up the environment for Microsoft Visual Studio using 'C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.20.27508/bin/HostX64/x64/../../../../../../../VC/Auxiliary/Build/vcvars64.bat'
ninja: build stopped: subcommand failed.
CMake will not be able to correctly generate this project. C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.13/Modules/CMakeTestCUDACompiler.cmake 46
Я пробовал разные комбинации Nvidia CUDA Toolkit (10.0, 10.1) и Microsoft Visual Studio (2017 — MSVC 14.16, 2019 — MSVC 14.20). Ни один из них не устраняет ошибку.
Я успешно построил проект на других машинах с теми же версиями Visual studio и nvcc.
Ответ №1:
У меня была такая же проблема, вот как я ее исправил.
Проверьте переменную среды PATH. В моем системном ПУТИ одно из значений было заключено в двойные кавычки. Это был путь к старой библиотеке DirectX 9, которую я использовал для создания старого визуализатора Winamp lol.
Будьте осторожны, потому что Windows 10 скрывает тот факт, что некоторые значения ПУТИ заключены в двойные кавычки. Когда он показывает вам проанализированный список значений, он не показывает двойные кавычки. Вы должны нажать кнопку «Редактировать текст …», Чтобы увидеть переменную PATH в виде одной длинной строки. Я также удалил все завершающие символы «» из любых значений, но я не уверен, что это что-то изменило.
Поскольку вы имеете дело с переменными среды, лучше перезагрузиться после удаления любых двойных кавычек и попытаться выполнить сборку снова.
Если это не решит проблему, вы можете просмотреть пакетные файлы и выполнить отладку для бедных людей, поместив «echo made it here» в разные места, пока не найдете источник ошибки.
Ответ №2:
У меня была та же проблема.
В моем случае это была не переменная PATH. Проблема заключается в TEMP или TMP, которые являются производными от имени пользователя. Если ваше имя пользователя содержит пробел, вы должны установить TMP и TEMP в пути без пробелов перед началом компиляции.
Ответ №3:
У меня была та же проблема.
В моем случае это было из-за неправильного autoexec в моей командной строке. Поэтому я очистил соответствующую запись в своем реестре (HKLM Software Microsoft Command Processor AutoRun), и все начало работать.
Если это не поможет, я рекомендую создать новую учетную запись на вашем компьютере и протестировать ее там. Если все работает нормально — вероятно, это связано с конфигурацией вашего профиля Windows (как в моем случае).
Ответ №4:
CMakeError.log или CMakeOutput.файлы журнала будут содержать дополнительную информацию об этой ошибке. (Вы можете найти vcvars64.bat)
Для меня в этих файлах говорилось: «Строка ввода слишком длинная» и «Синтаксис команды неверен». В моем случае это было вызвано слишком длинной переменной среды PATH. Ошибки были устранены после удаления некоторых ненужных строк из PATH и перезагрузки.