ESP-IDF project (cmake) issues.

Sysprogs forums Forums VisualGDB ESP-IDF project (cmake) issues.

This topic contains 7 replies, has 2 voices, and was last updated by  viordash 1 month, 2 weeks ago.

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #31399

    viordash
    Participant
    • periodic complete recompilation of the project, regardless of the presence of changes in the SDK or in other common files. It seems to me that sometimes it depends on the long time from the latest changes.
    • uncomfortable work with multiple ESP-IDF project (cmake) in one solution. Time-consuming simultaneous reconfiguration.
    • it is not clear to which of the projects the popup dialogs belong, see Screenshot_2.png.
    • is it possible to split tests into a separate project? Very long compilation of components for testing that are not needed in a work application?
    Attachments:
    You must be logged in to view attached files.
    #31418

    support
    Keymaster

    Hi,

    The ESP-IDF projects support multiple targets per project (i.e. libraries/components), hence typically there is only one project per solution, even for complex projects with reusable code. While having multiple ESP-IDF projects in the same solution is supported, it is somewhat a rare case and it may indeed not be 100% perfect. More specifically:

    1. The recompilation is managed by the ESP-IDF itself. VisualGDB simply invokes CMake/Ninja to build the project. You can try adding “-v” to Ninja arguments to see what is going on, but either way it’s not directly controlled by VisualGDB.
    2. You can reload the projects one at a time by right-clicking on them and selecting “Reload”. The initial loading after opening the solution will indeed be done simultaneously. As multiple ESP-IDF projects is a relatively rare case, we will not be optimizing this specific part, sorry.
    3. As most ESP-IDF-based setups use one project per solution, the test logic indeed doesn’t show the project name. If you have to use multiple ESP-IDF projects in the same solution, please consider answering “no” in the initial prompt and reloading projects one-by-one via context menu. This will show the prompts for the corresponding projects separately.
    4. This again comes from the way the ESP-IDF framework supports tests. You can try patching the ESP-IDF scripts to only build unit tests when a specific configuration variable is defined. If this gets the tests working via command line, but not in VisualGDB, we can try updating VisualGDB to recognize them properly unless it would require a large amount of changes.
    #31442

    viordash
    Participant

    >>1. The recompilation is managed by the ESP-IDF itself.

    I found that full recompilation depends on the commit in git, after each commit, complete rebuild of the project occurs. Is there any way to avoid this?

    Is there a setting like “VisualGDB -> Files -> Max. Items per Makefile line” for ESP-IDF project (cmake)? This is necessary for convenient resolution of merge conflicts.

    #31461

    viordash
    Participant

    Should I expect an answer from you here? or make a new ticket?

    #31467

    support
    Keymaster

    We usually answer most inquiries within 1-2 business days. There is no need to create multiple tickets for the same issue, as they go through the same queue anyway.

    Please note that the exact logic for recompilation it managed by ESP-IDF and not by VisualGDB. As far as our support goes, we can help if VisualGDB working on top of ESP-IDF produces different results from using ESP-IDF directly. For all issues that are also present in the ESP-IDF itself, please contact Espressif.

    Regarding the max. items per CMakeLists line, VisualGDB picks it up automatically. For each statement, it detects and preserves:

    • The indentation of the 1st line
    • The indentation of other lines
    • The number of items on the 1st line
    • The max. number of items on other lines

    Hence, there is no need to change any settings. Simply format the statement the way you prefer, and VisualGDB will preserve it when updating the statement.

    #31471

    viordash
    Participant

    Thanks,
    Sorry to be too hasty, I know your rules a little better now.
    I will try to figure out the espressif problem on my own.

    With regards to CMakeLists, I mean the first line with a list of source files used (idf_component_register (SRCS …), my list of files always goes on one line, and when I try to manually format and make a new line, it fails, when a new file is added into the project, the list of files is automatically changed back to a single line.
    Take a look at Screenshot_3.png, I created a project from a template and added some new files
    This problem prevents the use of automatic merge in git, it does not know how to merge line-by-line changes

    Attachments:
    You must be logged in to view attached files.
    #31509

    support
    Keymaster

    Hi,

    No problem. We have double-checked it and confirmed the problem. The new ESP-IDF is using the composite statement format for idf_component_register() that is formatted using different rules.

    We have added a setting controlling this behavior. Please try this build: VisualGDB-5.6.5.4406.msi

    You can achieve the desired behavior by setting Tools->Options->VisualGDB->CMake->Max. Composite Statement Length to 0.

    #31524

    viordash
    Participant

    Many thanks!
    The new version solved my problem with CMakeLists formatting.

    Regarding the recompilation of ESP-IDF after each commit, the problem is solved by adding the file $(IDF_PATH)/version.txt in which the IDF release version is written.
    the solution was found at https://docs.espressif.com/projects/esp-idf/en/v3.3/api-guides/build-system.html

Viewing 8 posts - 1 through 8 (of 8 total)

You must be logged in to reply to this topic.