【问题标题】:CMake fails to "find" Visual C++ compilerCMake 无法“找到”Visual C++ 编译器
【发布时间】:2016-12-19 20:31:36
【问题描述】:

我正在尝试使用 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.

我认为我不会因为通常的原因而收到此错误。 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]

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

【问题讨论】:

标签: visual-c++ cmake bamboo


【解决方案1】:

我遇到过这个问题;这是在 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 是必不可少的,最后为我解决了这个错误。
猜你喜欢
  • 2015-10-15
  • 2019-10-31
  • 2015-06-27
  • 1970-01-01
  • 2017-05-07
  • 2016-10-25
  • 1970-01-01
相关资源
最近更新 更多