#visual-studio-code
#visual-studio-код
Вопрос:
Я пытаюсь установить компилятор TI C2000 C / C (cl2000.exe ) в «compilerPath», но код VS говорит:
Невозможно разрешить конфигурацию с помощью compilerPath «… /bin/cl2000.exe «. Использование «cl.exe » вместо этого.
Есть ли способ заставить это работать, например, вручную указать, где искать включаемые файлы и т.д., Или компиляторы, отличные от больших (gcc, clang), просто не работают с VS Code, что бы я ни делал?
Мне не нужны такие функции, как отладчик, документация библиотеки и т.д., Но мне нужен intellisense (msvc-x64). Я мог бы просто использовать cl.exe
как определенный компилятор, но он не распознает некоторые специфические для компилятора вещи, например __attributes__((ramfunc))
, он не использует правильные <stdint.h>
и т. Д.
Комментарии:
1. Даже если у вас заработает компилятор, в VSCode, вероятно, все равно будут отсутствовать другие важные функции IDE для вашей (довольно специализированной) разработки микроконтроллеров: отладчик, документация библиотеки, intellisense и т. Д. И т. Д. ПРЕДЛОЖЕНИЕ: если вам нужна IDE, пожалуйста, рассмотрите TI Code Composer Studio: ti.com/tool/CCSTUDIO-C2000
2. Мне не нужен отладчик, документация библиотеки или что-то в этом роде. Мне просто нужно, чтобы он распознавал функции, зависящие от компилятора, и intellisense должен быть. Я надеялся, что msvc-x64 все равно будет работать с cl2000. CCS от TI — это не вариант, долгая история.
Ответ №1:
С текущим расширением C / C (v1.7.1) я не думаю, что то, что вы хотите, достижимо, так как кажется, что для извлечения из него большого количества «скрытой» информации требуется какая-то интеграция с компилятором, и в настоящее время только компилятор Microsoft C, Clang поддерживаются GCC и GCC (исходный код).
В любом случае, вы можете получить много функциональности, работая с правильным c_cpp_settings.json
.
Вот копия моей текущей настройки для проекта на F280049C. У меня есть SDK для управления двигателем, добавленный в качестве подмодуля в папке проекта, что вам может не понадобиться. Убедитесь, что вы добавили все различные пакеты SDK и другие компоненты, которые имеют отношение к вашему проекту.
Для defines
свойства я проверил свойства проекта в Code Composer, а затем в CSS Build / C2000 Compiler / Predefined Symbols
нем есть список определений, переданных в командной строке. Существует множество «скрытых» определений, которые я не знаю, как получить, см. Мой комментарий в коде ниже. Возьмите те, что приведены в примере, с щепоткой соли, ваши определения могут быть другими.
Стандарт C и C можно проверить с помощью флагов, переданных в командной строке (в моем проекте это C 03 и C11).
Путь к компилятору должен быть оставлен пустым ( ""
), так как расширение не может использовать компилятор C2000, вот почему вы получаете сообщение об Unable to resolve configuration with compilerPath ".../bin/cl2000.exe". Using "cl.exe" instead.
ошибке. Я думаю, VS Code видит «cl.exe » компилятор, компилятор, который может использовать расширение C / C (это компилятор VS от Microsoft, возможно, тот факт, что его название похоже на TI, вводит вас в заблуждение)
Что касается intelliSense
режима, ничего не будет работать с дьявольской архитектурой C2000. Я предпочитаю устанавливать IntelliSense на 32 бита, но это так же неправильно, как 64 бита, так что выбирайте свой яд там. Имейте в виду, что такие вещи, как значения sizeof
указателей or, будут неправильными в VS Code (поскольку вы говорите ему рассматривать их как 32-разрядную архитектуру).
Попробуйте эту конфигурацию. Вы получите много красных волнистых линий под некоторыми включениями, но большинство из них должны быть на вашем browse
пути и могут быть добавлены автоматически, щелкнув значок желтой лампочки.
{
"env": {
"SDKPath": "${workspaceFolder}/../lib/C2000Ware_MotorControl_SDK_3_01_00_00",
"StdLibPath": "C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.5.LTS",
"XDCTools": "C:/ti/ccs1031/xdctools_3_62_00_08_core",
"TIBIOS": "C:/ti/bios_6_83_00_18/packages/"
},
"configurations": [
{
"name": "TI",
"includePath": [
"${workspaceFolder}/**"
],
"browse": {
"path": [
"${StdLibPath}/**",
"${SDKPath}/**",
"${XDCTools}/**",
"${TIBIOS}/**"
]
},
"defines": [
"_F28004x",
"DEBUG",
"_INLINE",
"_FLASH",
"DRV8353_SPI",
// Hidden predefined symbols. They are set by the compiler by default, but
// they are not output on the command line and I haven't found a way to
// list them yet
// needed for STL (see s_c__system.h)
"_STLP_COMPILER",
"__TI_COMPILER_VERSION__"
],
"compilerPath": "",
"cStandard": "c11",
"cppStandard": "c 03",
"intelliSenseMode": "gcc-x86"
}
],
"version": 4
}
Имейте в виду, что при работе с микроконтроллерами требуется много настроек, но я думаю, что это поможет вам встать на правильный путь.
Комментарии:
1. Спасибо за ваши усилия! Я действительно сделал что-то подобное, т. Е. Я использую MSVC для IntelliSense, и чтобы избежать ошибок для встроенных функций, специфичных для C2000, я использую фиктивные макрофункции в c_cpp_properties. json, такой как «__attribute__ (X)=» и т.д. Спасибо!