将CMakeLists.txt移至src后,Github Actions中CMake加载缓存失败求助
CMake加载缓存失败问题解决
问题原因
你遇到的“Error loading Cache”错误,核心是CMake缓存文件的生成路径与后续构建路径不匹配:
- 执行
cmake ${{github.workspace}}/src时,CMake会在当前工作目录(默认是仓库根目录)生成CMakeCache.txt和构建文件,而非src目录内。 - 后续
cmake --build ${{github.workspace}}/src会尝试去src目录查找缓存文件,自然找不到,导致报错。
修正方案(推荐)
使用CMake 3.13+推荐的源码与构建目录分离方式,避免污染源码目录,同时确保路径匹配:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Configure CMake # -S指定源码目录,-B指定独立的构建目录 run: cmake -S ${{github.workspace}}/src -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - name: Test working-directory: ${{github.workspace}}/build run: ctest -C ${{env.BUILD_TYPE}}
备选方案(在src目录内构建)
如果坚持要在src目录内生成构建文件,可调整配置和构建步骤的工作目录:
jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Configure CMake working-directory: ${{github.workspace}}/src run: cmake . -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - name: Build working-directory: ${{github.workspace}}/src run: cmake --build . --config ${{env.BUILD_TYPE}} - name: Test working-directory: ${{github.workspace}}/src run: ctest -C ${{env.BUILD_TYPE}}
内容的提问来源于stack exchange,提问作者user17175449
相关产品推荐
相关产品推荐

