CMake не может найти компилятор Visual C++
Я пытаюсь создать набор тестов проекта C++ в Atlasian Bamboo для Windows, используя CMake и Visual Studio 2015 Community. CMake и VS отлично работают при работе под моей учетной записью, но при запуске их через Bamboo я получаю следующую ошибку:
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_C_COMPILER could be found.
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_CXX_COMPILER could be found.
Я не думаю, что получаю эту ошибку по обычной причине. Похоже, что CMake в состоянии найти сам компилятор. Скорее всего, источником ошибки является компилятор ресурсов. в CMakeFiles/CMakeError.log
файл, у меня есть следующий вывод:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\CL.exe
<<options removed> CMakeCCompilerId.c
C:\Windows\system32\config\systemprofile\AppData\Local\Temp\lnk{ECA1FDDF-C2EA-4
819-AFE3-6A5E06ECA59E}.tmp(1): error RC2135: file not found: C:\Windows\system3
2\config\systemprofile\AppData\Local\Temp\lnk{8A24DD6C-9300-41A6-9CAC-B48137E0E
056}.tmp [C:\bamboo\bamboo-agent-home\...\CMakeFiles\3.6.1\CompilerIdC\CompilerIdC.vcxproj]
Я действительно не понимаю путь, о котором сообщают для начала. Это символическая ссылка или что-то? Почему компилятор ресурсов даже участвует? У кого-нибудь есть идеи, почему он не может найти файл?
0 ответов
У меня была эта проблема; это результат установки удаленного агента Bamboo как службы под Windows, при этом он работает под локальной учетной записью пользователя (а не под системной учетной записью).
Проблема заключается в том, что для переменных среды TEMP и TMP установлено значение c:\windows\system32\config\systemprofile, что подходит для системной учетной записи, но не подходит для локальной учетной записи пользователя. Он не может получить к ним доступ, и cmake падает.
Обходной путь - отредактировать $BAMBOO_AGENT_HOME\conf\wrapper.conf и добавить строки
set.TEMP=c:/some/path
set.TMP=c:/some/path
А также установить tmpdir java, добавив:
wrapper.java.additional.#=-Djava.io.tmpdir="C:/some/path"
Где '#' - это следующее число в последовательности дополнительных значений wrapper.java.