Фон
Я унаследовал проект прошивки для микроконтроллера STM32, который уже определяет процесс сборки с использованием Docker, генерирующего двоичные файлы .bin и .elf. Я пытаюсь настроить свою среду разработки с помощью Visual Studio 2022 и Cmake, чтобы я мог запустить сборку в дистрибутиве WSL и синхронизировать сгенерированные файлы .elf и .bin обратно на свой хост Windows для использования с сервером GDB. Я написал следующий (упрощенный) файл CMakeLists.txt, который успешно запускает существующие образы докеров для сборки проекта:
# CMakeList.txt: файл проекта CMake верхнего уровня, выполните глобальную настройку. # и включите сюда подпроекты. # cmake_minimum_required (ВЕРСИЯ 3.8) # Включите горячую перезагрузку для компиляторов MSVC, если она поддерживается. если (ПОЛИТИКА CMP0141) cmake_policy (SET CMP0141 НОВЫЙ) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$") конециф() проект ("firmware_cmake") включить (ВнешнийПроект) установить (DOCKERFILE_DIR $ {CMAKE_CURRENT_SOURCE_DIR}) ВнешнийПроект_Добавить( build_image ПРЕФИКС build_image SOURCE_DIR ${DOCKERFILE_DIR} CONFIGURE_COMMAND rm -rf ${CMAKE_SOURCE_DIR}/build/ ${CMAKE_SOURCE_DIR}/Firmware/autogen ${CMAKE_SOURCE_DIR}/Firmware/build ${CMAKE_SOURCE_DIR}/Firmware/.tup BUILD_COMMAND docker build -t build-img . BUILD_IN_SOURCE 1 УСТАНОВКА_КОМАНДА "" ВСЕГДА ПРАВДА ) ВнешнийПроект_Добавить( build_cont ЗАВИСИТ от build_image ПРЕФИКС build_cont SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_COMMAND docker rm build-cont Докер BUILD_COMMAND run -i -v ${CMAKE_CURRENT_SOURCE_DIR}:/FW --name build-cont build-img BUILD_IN_SOURCE 1 УСТАНОВКА_КОМАНДА "" ВСЕГДА ПРАВДА ) add_custom_target(copy-runtime-files ВСЕ КОМАНДА ${CMAKE_COMMAND} -E копировать ${CMAKE_SOURCE_DIR}/Firmware/build/Firmware.bin ${CMAKE_BINARY_DIR}/Firmware.bin ЗАВИСИТ от build_cont) Проблема Создаваемые файлы прошивки не синхронизируются обратно с моим хост-компьютером Windows, когда я выполняю сборку или повторную сборку. Если я войду в свой дистрибутив WSL, я увижу, что файлы собираются и существуют в ~/.vs/firmware_cmake/out/build/linux-debug/, но они не синхронизируются. в %path-to-my-project%\out\Ubuntu\build\linux-debug
В качестве доказательства концепции я создал совершенно новый проект под названием cmake-test, в котором есть только один файл hello-world.cpp с этим файлом CMakeLists.txt:
cmake_minimum_required (ВЕРСИЯ 3.8) # Включите горячую перезагрузку для компиляторов MSVC, если она поддерживается. если (ПОЛИТИКА CMP0141) cmake_policy (SET CMP0141 НОВЫЙ) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$") конециф() проект («cmake-test») add_executable (cmake-test-execute "cmake-test.cpp" "cmake-test.h") add_custom_command( ВЫХОДНОЙ файл времени выполнения.txt КОМАНДА коснитесь ${CMAKE_SOURCE_DIR}/cmake-test/test.txt КОМАНДА ${CMAKE_COMMAND} -E копировать ${CMAKE_SOURCE_DIR}/cmake-test/test.txt ${CMAKE_BINARY_DIR}/test.txt ) add_custom_target( копировать файлы времени выполнения ВСЕ ЗАВИСИТ от ${CMAKE_BINARY_DIR}/runtime-file.txt ) Я снова вижу файл test.txt, созданный в моей среде WSL, но он не синхронизирован с моей хост-средой Windows; однако я вижу, что cmake-test-execute синхронизируется с моей хост-средой Windows.
РЕДАКТИРОВАТЬ: Вот как мой CMakePresets.json настроен для этой сборки:
{ «версия»: 3, "configurePresets": [ { "name": "linux-debug", "displayName": "Отладка Linux", "генератор": "Ниндзя", "binaryDir": "${sourceDir}/out/build/${presetName}", "installDir": "${sourceDir}/out/install/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Отладка" }, "состояние": { "тип": "равно", "lhs": "${hostSystemName}", "рхс": "Линукс" }, "продавец": { "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}", «copyBuildOutput»: правда } } } ] } Вопрос Как мне указать CMake, чтобы он помечал другие файлы как выходные артефакты, чтобы они были включены в файлы, помеченные для обратной синхронизации с моим компьютером с Windows, так же, как файлы, добавленные с помощью add_executable() ?
Я признаю, что, вероятно, использую cmake нестандартным способом, но из-за особенностей настройки этого проекта я не могу изменить метод, используемый для сборки файлов прошивки.
Ссылки
Я в основном следую этим руководствам, чтобы добиться того, что пытаюсь сделать:
пошаговое руководство по wsl
отладка проектов CMake с помощью сервера GDB
отладка встроенного устройства ARM в Visual Studio
Кросс-компиляция ARM gcc в Visual Studio
Принудительная синхронизация файлов для сборки CMake в среде WSL ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1704389891
Anonymous
Фон
Я унаследовал проект прошивки для микроконтроллера STM32, который уже определяет процесс сборки с использованием Docker, генерирующего двоичные файлы .bin и .elf. Я пытаюсь настроить свою среду разработки с помощью Visual Studio 2022 и Cmake, чтобы я мог запустить сборку в дистрибутиве WSL и синхронизировать сгенерированные файлы .elf и .bin обратно на свой хост Windows для использования с сервером GDB. Я написал следующий (упрощенный) файл CMakeLists.txt, который успешно запускает существующие образы докеров для сборки проекта:
# CMakeList.txt: файл проекта CMake верхнего уровня, выполните глобальную настройку. # и включите сюда подпроекты. # cmake_minimum_required (ВЕРСИЯ 3.8) # Включите горячую перезагрузку для компиляторов MSVC, если она поддерживается. если (ПОЛИТИКА CMP0141) cmake_policy (SET CMP0141 НОВЫЙ) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$") конециф() проект ("firmware_cmake") включить (ВнешнийПроект) установить (DOCKERFILE_DIR $ {CMAKE_CURRENT_SOURCE_DIR}) ВнешнийПроект_Добавить( build_image ПРЕФИКС build_image SOURCE_DIR ${DOCKERFILE_DIR} CONFIGURE_COMMAND rm -rf ${CMAKE_SOURCE_DIR}/build/ ${CMAKE_SOURCE_DIR}/Firmware/autogen ${CMAKE_SOURCE_DIR}/Firmware/build ${CMAKE_SOURCE_DIR}/Firmware/.tup BUILD_COMMAND docker build -t build-img . BUILD_IN_SOURCE 1 УСТАНОВКА_КОМАНДА "" ВСЕГДА ПРАВДА ) ВнешнийПроект_Добавить( build_cont ЗАВИСИТ от build_image ПРЕФИКС build_cont SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_COMMAND docker rm build-cont Докер BUILD_COMMAND run -i -v ${CMAKE_CURRENT_SOURCE_DIR}:/FW --name build-cont build-img BUILD_IN_SOURCE 1 УСТАНОВКА_КОМАНДА "" ВСЕГДА ПРАВДА ) add_custom_target(copy-runtime-files ВСЕ КОМАНДА ${CMAKE_COMMAND} -E копировать ${CMAKE_SOURCE_DIR}/Firmware/build/Firmware.bin ${CMAKE_BINARY_DIR}/Firmware.bin ЗАВИСИТ от build_cont) Проблема Создаваемые файлы прошивки не синхронизируются обратно с моим хост-компьютером Windows, когда я выполняю сборку или повторную сборку. Если я войду в свой дистрибутив WSL, я увижу, что файлы собираются и существуют в ~/.vs/firmware_cmake/out/build/linux-debug/, но они не синхронизируются. в %path-to-my-project%\out\Ubuntu\build\linux-debug
В качестве доказательства концепции я создал совершенно новый проект под названием cmake-test, в котором есть только один файл hello-world.cpp с этим файлом CMakeLists.txt:
cmake_minimum_required (ВЕРСИЯ 3.8) # Включите горячую перезагрузку для компиляторов MSVC, если она поддерживается. если (ПОЛИТИКА CMP0141) cmake_policy (SET CMP0141 НОВЫЙ) set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$") конециф() проект («cmake-test») add_executable (cmake-test-execute "cmake-test.cpp" "cmake-test.h") add_custom_command( ВЫХОДНОЙ файл времени выполнения.txt КОМАНДА коснитесь ${CMAKE_SOURCE_DIR}/cmake-test/test.txt КОМАНДА ${CMAKE_COMMAND} -E копировать ${CMAKE_SOURCE_DIR}/cmake-test/test.txt ${CMAKE_BINARY_DIR}/test.txt ) add_custom_target( копировать файлы времени выполнения ВСЕ ЗАВИСИТ от ${CMAKE_BINARY_DIR}/runtime-file.txt ) Я снова вижу файл test.txt, созданный в моей среде WSL, но он не синхронизирован с моей хост-средой Windows; однако я вижу, что cmake-test-execute синхронизируется с моей хост-средой Windows.
РЕДАКТИРОВАТЬ: Вот как мой CMakePresets.json настроен для этой сборки:
{ «версия»: 3, "configurePresets": [ { "name": "linux-debug", "displayName": "Отладка Linux", "генератор": "Ниндзя", "binaryDir": "${sourceDir}/out/build/${presetName}", "installDir": "${sourceDir}/out/install/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Отладка" }, "состояние": { "тип": "равно", "lhs": "${hostSystemName}", "рхс": "Линукс" }, "продавец": { "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": { "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}", «copyBuildOutput»: правда } } } ] } Вопрос Как мне указать CMake, чтобы он помечал другие файлы как выходные артефакты, чтобы они были включены в файлы, помеченные для обратной синхронизации с моим компьютером с Windows, так же, как файлы, добавленные с помощью add_executable() ?
Я признаю, что, вероятно, использую cmake нестандартным способом, но из-за особенностей настройки этого проекта я не могу изменить метод, используемый для сборки файлов прошивки.
Ссылки
Я в основном следую этим руководствам, чтобы добиться того, что пытаюсь сделать:
пошаговое руководство по wsl
отладка проектов CMake с помощью сервера GDB
отладка встроенного устройства ARM в Visual Studio
Кросс-компиляция ARM gcc в Visual Studio
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия