【问题标题】:cmake doesn't correctly run in a Bamboo scriptcmake 无法在 Bamboo 脚本中正确运行
【发布时间】:2020-03-20 14:55:58
【问题描述】:

我想运行一个执行 cmake 命令的内联脚本来为我的 c/c++ 单元测试生成构建文件。 Bamboo 代理在 Windows 10 操作系统上运行。我在代理服务器上安装了 cygwin 以使 cmake 启动并运行。 如果我在提示符下直接在代理服务器上运行 cmake,一切正常。
如果我在 Bamboo 脚本中运行相同的命令,我会收到以下错误:

I:\bamboo-agent-home\xml-data\build-dir\CIMX-XFU-JOB1>cmake . -Bbuild  
-- CMAKE_BINARY_DIR=/cygdrive/i/bamboo-agent-home/xml-data/build-dir/CIMX-XFU-JOB1/build
-- The C compiler identification is GNU 7.4.0
-- The CXX compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/bin/gcc.exe
-- Check for working C compiler: /usr/bin/gcc.exe -- broken
CMake Error at /usr/share/cmake-3.14.5/Modules/CMakeTestCCompiler.cmake:60 (message):
  The C compiler

    "/usr/bin/gcc.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: /cygdrive/i/bamboo-agent-home/xml-data/build-dir/CIMX-XFU-JOB1/build/CMakeFiles/CMakeTmp

    Run Build Command(s):/usr/bin/make.exe cmTC_7f576/fast
    /usr/bin/make -f CMakeFiles/cmTC_7f576.dir/build.make CMakeFiles/cmTC_7f576.dir/build
    make[1]: Entering directory '/cygdrive/i/bamboo-agent-home/xml-data/build-dir/CIMX-XFU-JOB1/build/CMakeFiles/CMakeTmp'
    Building C object CMakeFiles/cmTC_7f576.dir/testCCompiler.c.o
    /usr/bin/gcc.exe    -o CMakeFiles/cmTC_7f576.dir/testCCompiler.c.o   -c /cygdrive/i/bamboo-agent-home/xml-data/build-dir/CIMX-XFU-JOB1/build/CMakeFiles/CMakeTmp/testCCompiler.c
    C:/cygwin64/lib/gcc/x86_64-pc-cygwin/7.4.0/cc1.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory
    make[1]: *** [CMakeFiles/cmTC_7f576.dir/build.make:66: CMakeFiles/cmTC_7f576.dir/testCCompiler.c.o] Error 1
    make[1]: Leaving directory '/cygdrive/i/bamboo-agent-home/xml-data/build-dir/CIMX-XFU-JOB1/build/CMakeFiles/CMakeTmp'
    make: *** [Makefile:121: cmTC_7f576/fast] Error 2

  CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
  CMakeLists.txt:34 (project)

-- Configuring incomplete, errors occurred!
See also "/cygdrive/i/bamboo-agent-home/xml-data/build-dir/CIMX-XFU-JOB1/build/CMakeFiles/CMakeOutput.log".
See also "/cygdrive/i/bamboo-agent-home/xml-data/build-dir/CIMX-XFU-JOB1/build/CMakeFiles/CMakeError.log".

CMake 尝试编译一个简单的 C 应用程序以测试 gcc 编译器,但它失败了。 我尝试使用 gcc 编译相同的应用程序并且它可以工作。 看来cmake和Bamboo之间有问题。

在 Bamboo 脚本中,我将 cygwin(C:\cygwin64\bin) 的路径包含到环境变量 PATH 中

你知道什么会导致这个问题吗?

【问题讨论】:

  • C:/cygwin64/lib/gcc/x86_64-pc-cygwin/7.4.0/cc1.exe: error while loading shared libraries: ? - 你的 cygwin 编译器有问题。此错误意味着您的系统缺少该编译器所需的某些(!)库。你可以直接运行C:/cygwin64/lib/gcc/x86_64-pc-cygwin/7.4.0/cc1.exe,你会得到同样的结果。
  • 如果我在 testCCompiler.c 上运行 C:/cygwin64/lib/gcc/x86_64-pc-cygwin/7.4.0/cc1.exe,它工作正常。如果它在 CMake 中运行,它就不起作用。问题是由于某些原因,CMake 在 Bamboo 的上下文中运行时无法找到这些库。
  • “问题在于,由于某些原因,CMake 在 Bamboo 的上下文中运行时找不到这些库。” - 搜索库以运行编译器的不是 CMake。你的 Bamboo 的上下文或它下面的编译器安装有问题。
  • 这可能是由于网络驱动器The C compiler "/usr/bin/gcc.exe" is not able to compile a simple test program.的权限问题,尝试在Cgwin树下构建。 /tmp/usr/src 是可能的地方。

标签: cmake cygwin bamboo


【解决方案1】:

我发现了问题。 Bamboo 允许覆盖特定测试计划的环境变量。我重新定义了 PATH,添加了 Cygwin 可执行文件的路径,这样做,CMake 可以访问所有需要的库和可执行文件。 CMake 在生成构建文件之前测试 C 编译器是否可以运行小型测试应用程序。 CMake 生成一个 Makefile 来构建和执行这个测试应用程序。由于我仍然不明白的原因,Makefile 无法看到我对环境变量 PATH 的重新定义,但它读取了 Bamboo 的原始 PATH 版本。 为了解决这个问题,我不得不更改 Bamboo 的环境变量 PATH。

【讨论】:

    【解决方案2】:

    你能告诉我在这里用竹子做吗?我面临的问题是 cmake 根本无法启动,它给出了错误

    Failed to run MSBuild command: C:/Program Files (x86)/MSBuild/12.0/bin/MSBuild.exe
    to get the value of VCTargetsPath:
    

    虽然它在独立的 windows 机器上运行良好(这台机器被配置为代理)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 2017-03-31
    • 2022-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多