CMake无法"找到"Visual C++编译器

5

我正在尝试在Windows上使用CMake和Visual Studio 2015 Community在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.

虽然我不认为我因为通常的原因而得到这个错误。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]

我不太理解起始器报告的路径。那是符号链接还是什么?为什么会涉及资源编译器?有没有人知道为什么找不到文件?


你是否在命令提示符或任何你执行它的地方,使用vcvars批处理文件加载了Visual Studio变量?https://dev59.com/jXVD5IYBdhLWcg3wHnsX - usr1234567
1个回答

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

除了通过添加以下内容设置Java的tmpdir:

wrapper.java.additional.#=-Djava.io.tmpdir="C:/some/path"

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


这应该被接受为答案。set.TMP和set.TEMP是必不可少的,最终为我修复了这个错误。 - autonomy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接