gpt4 book ai didi

cmake - 为什么 Travis 无法识别脚本中已安装的 CMake?

转载 作者:行者123 更新时间:2023-12-01 13:28:29 26 4
gpt4 key购买 nike

我正在尝试为我的应用程序组合一个 Travis CI 脚本,这需要 CMake 3.5 或更高版本。可以找到整个 Travis 脚本 here .根据我在别处找到的建议,我使用以下命令安装 CMake:

 install:
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
- mkdir -p ${DEPS_DIR} && cd ${DEPS_DIR}

- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
CMAKE_URL="https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.tar.gz";
mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake;
export PATH=${DEPS_DIR}/cmake/bin:${PATH};
else
brew outdated cmake || brew upgrade cmake;
fi
- cmake --version

然后我用各种操作系统/编译器组合填充构建矩阵,最后我运行 Python 安装脚本(参见 here):

before_script:
- cd "${TRAVIS_BUILD_DIR}"

script:
- ./install.py --compiler=$COMPILER

Python 脚本本质上只是调用cmakemake,第一个CMakeLists.txt 可以找到here .

使用 Homebrew 安装 CMake 的 OSX 构建完美运行。但是,由于 CMake 不满足最低要求,所有 Linux 构建都在 script 阶段失败:

CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.5 or higher is required. You are running version 3.2.2

即使在 install 期间成功安装了 CMake 3.7:

$ cmake --version
cmake version 3.7.2

我做错了什么?

最佳答案

这很奇怪,使用预安装的 CMake 版本(= v3.2 on Travis)而不是更新的版本——但仅当从 Python 调用时才使用。

你可以试试这些:

方案一:移除Travis自带的CMake

这将阻止旧版本的使用。如果这不起作用(例如,可能是因为“找不到 Cmake”),这将显示问题的实际原因。

您可以将它添加到您的 install 步骤的 linux 分支中:

sudo apt-get purge cmake

或者:

sudo apt-get remove cmake

(可能需要加-y确认,所以变成remove -y)。

解决方案 2:使用 CMake 安装程序

通过 CMake Installer 进行安装是一种更简洁的方法。顺便说一句,事实证明 Travis 上的速度更快。

...
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
CMAKE_INSTALLER=install-cmake.sh
curl -sSL https://cmake.org/files/v3.7/cmake-3.7.2-Linux-x86_64.sh -o ${CMAKE_INSTALLER}
chmod +x ${CMAKE_INSTALLER}
sudo ./${CMAKE_INSTALLER} --prefix=/usr/local --skip-license
else
...

我正在使用 curl 而不是 wget + travis_retry,但这并不重要。您仍然可以像以前一样使用它们。


如果两者都不起作用,您应该检查 Python 脚本在哪里寻找可执行文件。

关于cmake - 为什么 Travis 无法识别脚本中已安装的 CMake?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47222115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com