CMake无法“找到” Visual C ++编译器

Jas*_*ins 5 cmake bamboo visual-c++

我正在尝试使用CMake和Visual Studio 2015社区在Windows上的Atlasian Bamboo上构建C ++项目测试套件。以我的用户帐户运行时,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.
Run Code Online (Sandbox Code Playgroud)

我不认为由于通常的原因我会收到此错误。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]
Run Code Online (Sandbox Code Playgroud)

我不太了解针对初学者的报道路径。这是符号链接还是什么?为什么还要涉及资源编译器?有人知道为什么找不到该文件吗?

Jam*_*one 4

我也遇到过这个问题;它是在 Windows 下将 Bamboo 远程代理安装为服务的结果,并在本地用户帐户(而不是系统帐户)下运行。

问题似乎是 TEMP 和 TMP 环境变量设置为 c:\windows\system32\config\systemprofile,这适用于系统帐户,但不适用于本地用户帐户。它无法访问它们,因此 cmake 崩溃了。

解决方法是编辑 $BAMBOO_AGENT_HOME\conf\wrapper.conf 并添加以下行

set.TEMP=c:/some/path
set.TMP=c:/some/path
Run Code Online (Sandbox Code Playgroud)

以及通过添加以下内容来设置 java 的 tmpdir:

wrapper.java.additional.#=-Djava.io.tmpdir="C:/some/path"
Run Code Online (Sandbox Code Playgroud)

其中“#”是wrapper.java.additional 值序列中的下一个数字。