Snapcraft 构建失败 cmake 部分步骤

问题描述

我的电脑:

快照 2.48.2 快照 2.48.2 系列 16 Ubuntu 20.04 内核 5.8.0-41-generic

这是我的 yml:

name: someproject
version: '3.3.1.0'
base: core20
summary: "someproject: asdfasdf"
description: |
    someproject asdfasdf.
grade: devel
confinement: strict

apps:
    someprojectd:
        daemon: forking
        command: |
            someprojectd-wrapper --detach --data-dir ${SNAP_COMMON} --config-file ${SNAP_USER_DATA}/etc/someprojectd.conf
        plugs:
            - network
            - network-bind
    someproject-wallet-rpc:
        command: |
            someproject-wallet-rpc --log-file ${SNAP_USER_DATA}
        plugs:
            - home
            - network
            - network-bind
    someproject-wallet-cli:
        command: |
            someproject-wallet-cli --log-file ${SNAP_USER_DATA}
        plugs:
            - home
            - network

parts:
    cmake-build:
        plugin: cmake
        cmake-parameters:
            - -DBDB_STATIC=1
            - -DUPNP_STATIC=1
            - -DBoost_USE_STATIC_LIBS=1
            - -DBoost_USE_STATIC_RUNTIME=1
            - -DARCH=default
        source: .
        build-packages:
            - gcc
            - pkg-config
            - libunbound-dev
            - libevent-dev
            - libboost-all-dev
            - libdb-dev
            - libunwind-dev
            - libminiupnpc-dev
            - libldns-dev
            - libexpat1-dev
            - bison
            - doxygen
            - graphviz
        stage-packages:
            - libminiupnpc17
            - libunbound8
            - libunwind8
        prime:
            - bin
            - usr/lib/
            - -usr/lib/gcc
            - -usr/share

    dist-files:
        plugin: dump
        source: .
        organize:
            contrib/snap/someprojectd.conf: etc/someprojectd.conf
            contrib/snap/someprojectd-wrapper: bin/someprojectd-wrapper
        prime:
            - etc
            - bin

我收到的错误是:

cmake /root/parts/cmake-build/src/ -G Unix Makefiles -DBDB_STATIC=1 -DUPNP_STATIC=1 -DBoost_USE_STATIC_LIBS=1 -DBoost_USE_STATIC_RUNTIME=1 -DARCH=default CMake 错误:当前 CMakeCache.txt 目录 /root/parts/cmake-build/src/CMakeCache.txt 不同于 创建 CMakeCache.txt 的目录 /home/chris/etnsnap。这 可能会导致在错误的位置创建二进制文件。如果你是 不确定,重新编辑 CMakeCache.txt Failed to build 'cmake-build'。

推荐的解决方法:检查构建日志并确保部件的 配置和来源正确。

我了解如何在本地环境中解决此问题;已经发表了其他关于如何做到这一点的帖子,我在本地建设很好。然而,这似乎是 Snapcraft 本身的问题。似乎 cmakecache.txt 首先在本地环境中生成,然后其他一切都在 vm 内部完成,导致冲突。我从来没有遇到过这个问题。有没有人有任何想法?谢谢

解决方法

与错误状态一样,您的源目录中有一个陈旧的 CMakeCache.txt。这需要在您运行 snapcraft 之前删除。理想情况下,您的源代码树中根本不会有任何构建时临时文件。这意味着删除您在主机上使用的所有 build 目录。您还应该删除任何 CMakeCache.txt 文件和任何 CMakeOut.txt 文件。不要删除任何 CMakeLists.txt 文件或任何 *.cmake 文件,这对于从源代码构建很重要。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...