@ax2pp

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Macでcmakeのアップデートをしたい

Q&A

Closed

Macでcmakeのアップデートをしたいが、できない。

Mac(Big Sur11.7)でbrewでcmakeのアップデートがうまくできません。
現在、下記ページを見ながらESP-IDFのサンプルプログラムの実行環境を整えていますが、
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-macos-setup.html

サンプルプログラムの実行のために
idf.py set-target esp32
とやると
CMake Error at CMakeLists.txt:3 (cmake_minimum_required):
CMake 3.16 or higher is required. You are running version 3.14.5
とエラーが出て、バージョンが古いとのことで、
cmake --version
では、
cmake version 3.14.5
と出て確かに古いのですが
brew install cmake
とやると
Warning: cmake 3.26.4 is already installed and up-to-date.
と出て既に最新版が入っているようです。

which cmake
とやると
/opt/local/bin/cmake
でした。

3.14.5をアンインストールして3.26.4を使えるようにしたいのですが、どうしたらいいでしょうか?

発生している問題・エラー

$ idf.py set-target esp32

Adding "set-target"'s dependency "fullclean" to list of commands with default set of options.
Executing action: fullclean
Build directory '/Users/***/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build' not found. Nothing to clean.
Executing action: set-target
Set Target to: esp32, new sdkconfig will be created.
Running cmake in directory /Users/***/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=/Users/***/.espressif/python_env/idf5.2_py3.11_env/bin/python -DESP_PLATFORM=1 -DIDF_TARGET=esp32 -DCCACHE_ENABLE=0 /Users/***/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon"...
CMake Error at CMakeLists.txt:3 (cmake_minimum_required):
  CMake 3.16 or higher is required.  You are running version 3.14.5


-- Configuring incomplete, errors occurred!
cmake failed with exit code 1, output of the command is in the /Users/***/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build/log/idf_py_stderr_output_711 and /Users/***/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build/log/idf_py_stdout_output_711

自分で試したこと

brew uninstall cmake
brew install cmake
とやって再インストールしても3.26.4がアンインストールされて再インストールされるだけで、3.14.5は消えませんでした。

0 likes

1Answer

真の目的はIDF環境でのビルドでしょうから、2つのアプローチがありますね。

  1. Q&Aされているように、エラーが出ない cmake にする方法
  2. cmake以外でビルドする方法 (自分は Intel Mac で、gmake でビルドしています)

そのためにも、ご自身の環境を漏れなく情報提供してください。

$ uname -a

$ python --version

$ idf.py --version

$ make --version

$ cmake --version

$ gmake --version
1Like

Comments

  1. 追加で、下記の情報もください

    $ brew --prefix
    
    $ ls `brew --prefix`/Cellar/cmake
    
    $ ls -ls `which cmake`
    
  2. 何度もすみません。
    追加で、idf.py set-target esp32 が止まった時点での下記コマンドの結果もお願いします。

    $ echo $PATH|tr ':' '\n'
    

    全部の結果が貼られたら、問題切り分けしてみます。
    ターミナルの内容を編集することなく、全部コピペで貼ってもらった方がいいです。ユーザ名をUSERNAMEとかに加工することは必要に応じて実施してください。

  3. @ax2pp

    Questioner

    ありがとうございます。

    下記のようになりました。

    $ uname -a
    Darwin USERNAMEnoMacBook-Pro.local 20.6.0 Darwin Kernel Version 20.6.0: Mon Aug 29 04:31:06 PDT 2022; root:xnu-7195.141.39~2/RELEASE_X86_64 x86_64
    $ python --version
    Python 3.11.2
    $ idf.py --version
    fatal: No names found, cannot describe anything.
    WARNING: Git version unavailable, reading from source
    ESP-IDF v5.2.0
    $ make --version
    GNU Make 3.81
    Copyright (C) 2006  Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.
    There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
    PARTICULAR PURPOSE.
    
    This program built for i386-apple-darwin11.3.0
    $ cmake --version
    cmake version 3.14.5
    
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    $ gmake --version
    -bash: gmake: command not found
    $ brew --prefix
    /usr/local
    $ ls `brew --prefix`/Cellar/cmake
    3.26.4
    $ ls -ls `which cmake`
    4184 -rwxr-xr-x  1 root  admin  5514236  6  3  2019 /opt/local/bin/cmake
    $ 
    $ idf.py set-target esp32
    Adding "set-target"'s dependency "fullclean" to list of commands with default set of options.
    Executing action: fullclean
    Directory '/Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build' doesn't seem to be a CMake build directory. Refusing to automatically delete files in this directory. Delete the directory manually to 'clean' it.
    $ echo $PATH|tr ':' '\n'
    /Users/USERNAME/esp/esp-idf/components/espcoredump
    /Users/USERNAME/esp/esp-idf/components/partition_table
    /Users/USERNAME/esp/esp-idf/components/app_update
    /Users/USERNAME/esp/esp-idf/components/espcoredump
    /Users/USERNAME/esp/esp-idf/components/partition_table
    /Users/USERNAME/esp/esp-idf/components/app_update
    /Users/USERNAME/esp/esp-idf/components/espcoredump
    /Users/USERNAME/esp/esp-idf/components/partition_table
    /Users/USERNAME/esp/esp-idf/components/app_update
    /Users/USERNAME/.espressif/tools/xtensa-esp-elf-gdb/12.1_20221002/xtensa-esp-elf-gdb/bin
    /Users/USERNAME/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin
    /Users/USERNAME/.espressif/tools/esp32ulp-elf/2.35_20220830/esp32ulp-elf/bin
    /Users/USERNAME/.espressif/tools/openocd-esp32/v0.12.0-esp32-20230419/openocd-esp32/bin
    /Users/USERNAME/.espressif/tools/ninja/1.10.2/
    /Users/USERNAME/.espressif/python_env/idf5.2_py3.11_env/bin
    /Users/USERNAME/esp/esp-idf/tools
    /Users/USERNAME/.cargo/bin
    /usr/local/opt/openssl@1.1/bin
    /opt/local/bin
    /opt/local/sbin
    /usr/local/bin
    /usr/bin
    /bin
    /usr/sbin
    /sbin
    /Applications/VMware Fusion.app/Contents/Public
    /opt/X11/bin
    /Library/Apple/usr/bin
    /Users/USERNAME/.pyenv/bin
    /Users/USERNAME/development/flutter/bin
    /Users/USERNAME/Library/Android/sdk/tools
    /Users/USERNAME/Library/Android/sdk/platform-tools
    

    よろしくお願いします。

  4. cmakeに関しては、お使いのIntel Macの環境に矛盾があることが分かります。
    以下、ご提示された情報からの抜粋

    $ cmake --version
    cmake version 3.14.5
    
    $ ls `brew --prefix`/Cellar/cmake
    3.26.4
    
    $ ls -ls `which cmake`
    4184 -rwxr-xr-x  1 root  admin  5514236  6  3  2019 /opt/local/bin/cmake
    
    • /opt/local/bin/cmakeのバージョンは3.14.5
    • homebrewでインストールしたcmakeは、3.26.4

    まさに、Q&Aされた内容です。

    本来、homebrewでインストールしたcmakeは、インストール先が異なっていて、/opt/local/bin/cmakeをシンボリックリンクで置き換えるはずなんですが、そうなっていません。ここが矛盾点。

    対応策ですが、

    ステップ1:以下のコマンで、homebrewでインストールしたcmakの存在を確認する

    ステップ1
    $ ls -ls /usr/local/Cellar/cmake/3.26.4/bin/cmake
    

    上記は「存在しているはず」なので、(→もし、存在していない場合は、さらに別な問題)

    ステップ2:以下のコマンで、手動で/opt/local/bin/cmakeをシンボリックリンクで置き換える

    ステップ2
    $ mv /opt/local/bin/cmake /opt/local/bin/cmake_3.14.5 #現cmakeリネーム(退避)
    $ ln -s /usr/local/Cellar/cmake/3.26.4/bin/cmake /opt/local/bin/cmake
    

    ステップ3:cmakeのバージョンを確認する

    ステップ3
    $ cmake --version
    # 3.26.4 のはず
    

    3.26.4 になっていなければ、さらに別な問題です。

  5. 横から失礼します。

    本来、homebrewでインストールしたcmakeは、インストール先が異なっていて、/opt/local/bin/cmakeをシンボリックリンクで置き換えるはずなんですが、そうなっていません。

    この環境で Homebrew の prefix は /usr/local なので、 /opt/local 以下を置き換えることはないと思います。 Homebrew 以外の何かしらでインストールした cmake が残っているのでは。

    Homebrew が正常なら /usr/local/bin/cmake が存在するはずですから、 /opt/local/bin/cmake を消す(or リネームで退避)だけで動きそうです。

  6. @uasi さん、ご助言多謝です

    /opt/local/bin/cmake を消す(or リネームで退避)だけで動きそうです。

    そうかとも思いましたが、他にパスが通っているようにも見えませんでしたので、リンボリックリンクを提案しましたが、「消す」だけで解決すれば何よりです。

  7. @ax2pp

    Questioner

    ありがとうございました。
    /opt/local/bin/cmake のリネームだけで動きました。

    シンボリックリンクは既に下記のように通っていました。

    $ls -ls /usr/local/bin/cmake
    0 lrwxr-xr-x  1 USERNAME  admin  32  6  7 15:10 /usr/local/bin/cmake -> ../Cellar/cmake/3.26.4/bin/cmake
    

    ただし、cmakeのパスは通っていなくて気持ちが悪い状態です。

    USERNAMEnoMacBook-Pro:ble_ibeacon USERNAME$ cmake --version
    -bash: /opt/local/bin/cmake: No such file or directory
    

    それにも関わらず、目的の idf.py set-target esp32 はエラーなく実行できているようでした。

    USERNAMEnoMacBook-Pro:ble_ibeacon USERNAME$ idf.py set-target esp32
    Adding "set-target"'s dependency "fullclean" to list of commands with default set of options.
    Executing action: fullclean
    Executing action: set-target
    Set Target to: esp32, new sdkconfig will be created.
    Running cmake in directory /Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build
    Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=/Users/USERNAME/.espressif/python_env/idf5.2_py3.11_env/bin/python -DESP_PLATFORM=1 -DIDF_TARGET=esp32 -DCCACHE_ENABLE=0 /Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon"...
    -- Existing sdkconfig '/Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig' renamed to '/Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig.old'.
    -- Found Git: /usr/local/bin/git (found version "2.22.0") 
    -- The C compiler identification is GNU 12.2.0
    -- The CXX compiler identification is GNU 12.2.0
    -- The ASM compiler identification is GNU
    -- Found assembler: /Users/USERNAME/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /Users/USERNAME/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /Users/USERNAME/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Building ESP-IDF components for target esp32
    -- Project sdkconfig file /Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig
    Loading defaults file /Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig.defaults...
    -- Compiler supported targets: xtensa-esp32-elf
    -- Looking for sys/types.h
    -- Looking for sys/types.h - found
    -- Looking for stdint.h
    -- Looking for stdint.h - found
    -- Looking for stddef.h
    -- Looking for stddef.h - found
    -- Check size of time_t
    -- Check size of time_t - done
    -- Found Python3: /Users/USERNAME/.espressif/python_env/idf5.2_py3.11_env/bin/python (found version "3.11.2") found components: Interpreter 
    -- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS
    -- Performing Test C_COMPILER_SUPPORTS_WFORMAT_SIGNEDNESS - Success
    -- App "ble_ibeacon_demo" version: f74f3c52
    -- Adding linker script /Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build/esp-idf/esp_system/ld/memory.ld
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/esp_system/ld/esp32/sections.ld.in
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
    -- Adding linker script /Users/USERNAME/esp/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
    fatal: not a git repository: /Users/USERNAME/esp/esp-idf/components/openthread/openthread/../../../.git/modules/components/openthread/openthread
    -- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_bootloader_format esp_coex esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_system esp_timer esp_wifi espcoredump esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash nvs_sec_provider openthread partition_table perfmon protobuf-c protocomm pthread sdmmc soc spi_flash spiffs tcp_transport ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa
    -- Component paths: /Users/USERNAME/esp/esp-idf/components/app_trace /Users/USERNAME/esp/esp-idf/components/app_update /Users/USERNAME/esp/esp-idf/components/bootloader /Users/USERNAME/esp/esp-idf/components/bootloader_support /Users/USERNAME/esp/esp-idf/components/bt /Users/USERNAME/esp/esp-idf/components/cmock /Users/USERNAME/esp/esp-idf/components/console /Users/USERNAME/esp/esp-idf/components/cxx /Users/USERNAME/esp/esp-idf/components/driver /Users/USERNAME/esp/esp-idf/components/efuse /Users/USERNAME/esp/esp-idf/components/esp-tls /Users/USERNAME/esp/esp-idf/components/esp_adc /Users/USERNAME/esp/esp-idf/components/esp_app_format /Users/USERNAME/esp/esp-idf/components/esp_bootloader_format /Users/USERNAME/esp/esp-idf/components/esp_coex /Users/USERNAME/esp/esp-idf/components/esp_common /Users/USERNAME/esp/esp-idf/components/esp_eth /Users/USERNAME/esp/esp-idf/components/esp_event /Users/USERNAME/esp/esp-idf/components/esp_gdbstub /Users/USERNAME/esp/esp-idf/components/esp_hid /Users/USERNAME/esp/esp-idf/components/esp_http_client /Users/USERNAME/esp/esp-idf/components/esp_http_server /Users/USERNAME/esp/esp-idf/components/esp_https_ota /Users/USERNAME/esp/esp-idf/components/esp_https_server /Users/USERNAME/esp/esp-idf/components/esp_hw_support /Users/USERNAME/esp/esp-idf/components/esp_lcd /Users/USERNAME/esp/esp-idf/components/esp_local_ctrl /Users/USERNAME/esp/esp-idf/components/esp_mm /Users/USERNAME/esp/esp-idf/components/esp_netif /Users/USERNAME/esp/esp-idf/components/esp_netif_stack /Users/USERNAME/esp/esp-idf/components/esp_partition /Users/USERNAME/esp/esp-idf/components/esp_phy /Users/USERNAME/esp/esp-idf/components/esp_pm /Users/USERNAME/esp/esp-idf/components/esp_psram /Users/USERNAME/esp/esp-idf/components/esp_ringbuf /Users/USERNAME/esp/esp-idf/components/esp_rom /Users/USERNAME/esp/esp-idf/components/esp_system /Users/USERNAME/esp/esp-idf/components/esp_timer /Users/USERNAME/esp/esp-idf/components/esp_wifi /Users/USERNAME/esp/esp-idf/components/espcoredump /Users/USERNAME/esp/esp-idf/components/esptool_py /Users/USERNAME/esp/esp-idf/components/fatfs /Users/USERNAME/esp/esp-idf/components/freertos /Users/USERNAME/esp/esp-idf/components/hal /Users/USERNAME/esp/esp-idf/components/heap /Users/USERNAME/esp/esp-idf/components/http_parser /Users/USERNAME/esp/esp-idf/components/idf_test /Users/USERNAME/esp/esp-idf/components/ieee802154 /Users/USERNAME/esp/esp-idf/components/json /Users/USERNAME/esp/esp-idf/components/log /Users/USERNAME/esp/esp-idf/components/lwip /Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/main /Users/USERNAME/esp/esp-idf/components/mbedtls /Users/USERNAME/esp/esp-idf/components/mqtt /Users/USERNAME/esp/esp-idf/components/newlib /Users/USERNAME/esp/esp-idf/components/nvs_flash /Users/USERNAME/esp/esp-idf/components/nvs_sec_provider /Users/USERNAME/esp/esp-idf/components/openthread /Users/USERNAME/esp/esp-idf/components/partition_table /Users/USERNAME/esp/esp-idf/components/perfmon /Users/USERNAME/esp/esp-idf/components/protobuf-c /Users/USERNAME/esp/esp-idf/components/protocomm /Users/USERNAME/esp/esp-idf/components/pthread /Users/USERNAME/esp/esp-idf/components/sdmmc /Users/USERNAME/esp/esp-idf/components/soc /Users/USERNAME/esp/esp-idf/components/spi_flash /Users/USERNAME/esp/esp-idf/components/spiffs /Users/USERNAME/esp/esp-idf/components/tcp_transport /Users/USERNAME/esp/esp-idf/components/ulp /Users/USERNAME/esp/esp-idf/components/unity /Users/USERNAME/esp/esp-idf/components/usb /Users/USERNAME/esp/esp-idf/components/vfs /Users/USERNAME/esp/esp-idf/components/wear_levelling /Users/USERNAME/esp/esp-idf/components/wifi_provisioning /Users/USERNAME/esp/esp-idf/components/wpa_supplicant /Users/USERNAME/esp/esp-idf/components/xtensa
    -- Configuring done (8.4s)
    -- Generating done (1.4s)
    -- Build files have been written to: /Users/USERNAME/esp/esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon/build
    
  8. @ax2pp

    Questioner

    すみません、先程のcmakeパスが通っていなかったと思ったのは間違いだったようです。

    環境変数の設定 . $HOME/esp/esp-idf/export.sh を実行していなかっただけのようでした。
    上記を実行したら、下記のように通っていました。

    $ cmake --version
    cmake version 3.26.4
    
    CMake suite maintained and supported by Kitware (kitware.com/cmake).
    
  9. @ax2pp

    Questioner

    その後、問題なく進められたのでクローズしたいと思います。
    ありがとうございました。

Your answer might help someone💌