Ninja uses project directory as build directory instead of ./build

brian.motusi
Posts: 4
Joined: Mon Dec 28, 2020 9:52 pm

Ninja uses project directory as build directory instead of ./build

Postby brian.motusi » Wed Jan 20, 2021 5:33 pm

I've created a project about a year ago that uses CMake only and not Ninja.

Coworkers followed instructions at https://docs.espressif.com/projects/esp ... setup.html an had problems building the project. So I was able to fix the problems and build successfully with Ninja, but not with the idf.py.

Problem: can not build/flash/monitor with idf.py with Ninja
Expected: Be able to use idf.py as before with Ninja
Suspected Cause: The 'cmake -G Ninja' command does not have the correct build directory setting. The generated files are being placed in the project directory not the build directory.

Here is what I did.

1. 'brew install cmake ninja dfu-util'
2. cd project root
3. idf.py clean
4. idf.py reconfigure

Now if I try to build with the idf.py I get an error:

brian@nova:~/local/motusi/dev/obc-app/app$ idf.py build
Executing action: all (aliases: build)
Running cmake in directory /Users/brian/local/motusi/dev/obc-app/app/build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DIDF_TARGET=esp32 -DCCACHE_ENABLE=0 /Users/brian/local/motusi/dev/obc-app/app"...
-- Component directory /Users/brian/local/motusi/esp-install-test/esp-idf/components/cmock does not contain a CMakeLists.txt file. No component will be added
-- Building ESP-IDF components for target esp32
Loading defaults file /Users/brian/local/motusi/dev/obc-app/app/sdkconfig.defaults...
** redact lots of lines **
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/brian/local/motusi/dev/obc-app/app
Running ninja in directory /Users/brian/local/motusi/dev/obc-app/app/build
Executing "ninja all"...
ninja: error: loading 'build.ninja': No such file or directory
ninja failed with exit code 1

If I follow the direct build with Ninja instructions Here is what I find:
brian@nova:~/local/motusi/dev/obc-app/app$ cd build
brian@nova:~/local/motusi/dev/obc-app/app/build$ cmake .. -G Ninja
-- Component directory /Users/brian/local/motusi/esp-install-test/esp-idf/components/cmock does not contain a CMakeLists.txt file. No component will be added
-- Building ESP-IDF components for target esp32
Loading defaults file /Users/brian/local/motusi/dev/obc-app/app/sdkconfig.defaults...
-- App "obc_app" version: 4
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-time.ld
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
-- Adding linker script /Users/brian/local/motusi/dev/obc-app/app/esp-idf/esp32/esp32_out.ld
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp32/ld/esp32.project.ld.in
-- Adding linker script /Users/brian/local/motusi/esp-install-test/esp-idf/components/esp32/ld/esp32.peripherals.ld
-- Components: app_trace app_update asio bootloader bootloader_support bt cbor coap common console cxx driver efuse esp-tls esp32 esp_adc_cal esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server
** redact lots of lines **
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/brian/local/motusi/dev/obc-app/app
brian@nova:~/local/motusi/dev/obc-app/app/build$ ninja
ninja: error: loading 'build.ninja': No such file or directory
brian@nova:~/local/motusi/dev/obc-app/app/build$ ls ../build.ninja
../build.ninja

brian.motusi
Posts: 4
Joined: Mon Dec 28, 2020 9:52 pm

Re: Ninja uses project directory as build directory instead of ./build

Postby brian.motusi » Thu Jan 21, 2021 5:49 pm

Fresh clone of my project fixed this problem.

ESP_Angus
Posts: 2344
Joined: Sun May 08, 2016 4:11 am

Re: Ninja uses project directory as build directory instead of ./build

Postby ESP_Angus » Fri Jan 22, 2021 1:35 am

Hi brian,

I'm not sure what the cause of this could have been, maybe some path in the generated CMakeCache.txt file. However I'm glad you were able to fix it.

Who is online

Users browsing this forum: No registered users and 331 guests