Как я могу использовать VSCode с CMake и иметь разные цели, каждая из которых имеет разную архитектуру и набор инструментов?

Я работаю над проектом с Visual Studio Code и CMake, где компилирую/перекрестно компилирую разные цели для разных платформ. На данный момент проект имеет три платформы, каждая из которых использует свой набор инструментов. Я собираюсь упростить названия платформ и цепочек инструментов, чтобы объяснить:

  • Platform1 использует набор инструментов, определенный в platform1.cmake, и строится на основе platform1/CMakeLists.txt.
  • Platform2_native использует набор инструментов, определенный в platform2.cmake, и строится на основе platform2/CMakeLists.txt.
  • Platform2_emulated использует собственный набор инструментов системы, а также строится на основе platform2/CMakeLists.txt

Если я индивидуально настрою и соберу каждый из них с помощью командной строки и вручную укажу правильный набор инструментов, то все они будут построены правильно. Но что мне действительно хочется, так это иметь возможность выполнять сборку в Visual Studio Code и указывать, какую цель я создаю.

Однако я все еще новичок в CMake и упираюсь в кирпичную стену, пытаясь понять, как это настроить. Судя по тому, что я читаю, CMake предполагает, что все цели будут использовать одну и ту же цепочку инструментов, и похоже, что Visual Studio Code работает только с одним проектом CMake одновременно.

Есть ли способ сделать это в одном рабочем пространстве кода Visual Studio?

Похоже, вам нужны пресеты.

sweenish 26.07.2024 21:47

@sweenish Можете ли вы рассказать поподробнее?

Bri Bri 26.07.2024 21:52

Похоже, пресеты — это действительно то, что мне нужно! Если кто-то из вас захочет отправить ответ, я отмечу его как правильный.

Bri Bri 26.07.2024 22:51
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Судя по тому, что я читаю, CMake предполагает, что все цели будут использовать одну и ту же цепочку инструментов.

Да. Все цели в одной и той же системе сборки, настроенной CMake. Применяются такие границы, как ВнешнийПроект. См. https://stackoverflow.com/a/76996558/11107541

Visual Studio Code работает только с одним проектом CMake одновременно.

CMake Tools работает одновременно с одним проектом верхнего уровня.

Есть ли способ сделать это в одном рабочем пространстве кода Visual Studio?

Пресеты помогут. В этом случае я бы определил предустановку конфигурации для каждой из этих трех вещей (см. элементы architecture, toolset и toolchainFile). Если бы не было разделения нативной платформы Platform2 и эмуляции, вы могли бы в качестве альтернативы настроить это как несколько исходных каталогов (см. настройки cmake.sourceDirectory и https://stackoverflow.com/a/73698237/11107541 и ️ 🔁 https://stackoverflow.com/a/77657422/11107541).

В конечном итоге я использовал настройку пресетов, и она отлично работает. VSCode также позволяет легко переключаться между различными пресетами.

Bri Bri 27.07.2024 21:18

Другие вопросы по теме