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.

Другие вопросы по тегам