问题描述
我正在尝试将 MSYS2 构建从 azure 管道 CI(有效)转换为 github 操作。
我现在遇到了 cmake 未被识别为命令的问题。
我当前的(简化的)yaml 如下:
- uses: msys2/setup-msys2@v2
with:
msystem: MSYS
install: >-
git
base-devel
mingw-w64-${{ matrix.arch }}-gcc
mingw-w64-${{ matrix.arch }}-cmake
update: true
- name: Move Checkout
run: |
copy-Item -Path ".\temp" -Destination "C:\_" -Recurse
- name: CI-Build
shell: msys2 {0}
run: |
cd /C/_
mkdir build
cd build
cmake -DCMAKE_FIND_LIBRARY_SUFFIXES='.a' -DCMAKE_TOOLCHAIN_FILE=cmake/Toolchains/mingw64-x86_64.cmake -DCMAKE_BUILD_TYPE=Release -G 'MSYS Makefiles' ..
make VERBOSE=1 -j4
为什么 cmake 不是公认的命令?!
解决方法
CMake 的包名错误。以下是 MSYS repository 中名称中包含 cmake
的软件包列表:
cmake
icmake
mingw-w64-cmake
mingw-w64-cmake-doc-qt
mingw-w64-extra-cmake-modules
mingw-w64-python-sphinxcontrib-moderncmakedomain
我打赌你要么想要mingw-w64-cmake
,要么想要cmake
。 matrix.arch
中的 mingw-w64-${{ matrix.arch }}-cmake
值不会扩展为上述名称之一。
答案是将 msystem
从 MSYS
更改为 MINGW64
这是因为 MSYS
将针对 cygwin(这将需要 cmake
包,如Alex Reinking)。
指定 MINGW64
将允许正确使用 mingw-w64-x86_64-cmake
包。