Как настроить VS Code для сборки, запуска и отладки простых файлов C ++ в OSX? - PullRequest
0 голосов
/ 09 ноября 2018

Ближайший аналогичный ответ, который я нашел для этого, - здесь

Но это не содержит ответа на мой вопрос. Я также прошел через docs за попытку поддержки C ++ для VSCode. Я не нашел конкретных настроек OSX, и я не очень разбираюсь в таких конфигурациях. Может кто-нибудь, пожалуйста, помогите

Обновление:

Добавление содержимого tasks.json, launch.json, c_cpp_properties.json и вывода терминала для большей ясности:

tasks.json:

{
"version": "2.0.0",
"tasks": [
  {
    "label": "build & debug file",
    "type": "shell",
    "command": "g++",
    "args": [
      "-g",
      "-o",
      "${fileBasenameNoExtension}",
      "${file}"
    ],
    "group": {
      "kind": "build",
      "isDefault": true
    }
  },
  {
    "label": "build & run file",
    "type": "shell",
    "command": "g++",
    "args": [
      "-o",
      "${fileBasenameNoExtension}",
      "${file}"
    ],
    "group": {
      "kind": "build",
      "isDefault": true
    },
    "problemMatcher": []
  }
]

}

launch.json:

{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "name": "(lldb) Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/test",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": true,
        "MIMode": "lldb"
    }
]

}

c_cpp_properties.json:

{
"configurations": [
    {
        "name": "Mac",
        "includePath": [
            "${workspaceFolder}/**",
            "/usr/local/Cellar/gcc/7.1.0/include/c++/7.1.0",
            "/usr/include/c++/4.2.1"
        ],
        "defines": [],
        "macFrameworkPath": [
            "/System/Library/Frameworks",
            "/Library/Frameworks"
        ],
        "compilerPath": "/usr/bin/clang",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "intelliSenseMode": "clang-x64"
    }
],
"version": 4 }

Текущая проблема, с которой я сталкиваюсь в этой конфигурации, заключается в том, что при попытке получить следующую ошибку: Terminal-> Run Build Task-> build & debug file:

    ld: warning: ignoring file /Users/xyz/Workspace/VSCode/.vscode/tasks.json, file was built for unsupported file format ( 0x7B 0x0A 0x20 0x20 0x20 0x20 0x22 0x76 0x65 0x72 0x73 0x69 0x6F 0x6E 0x22 0x3A ) which is not the architecture being linked (x86_64): /Users/xyz/Workspace/VSCode/.vscode/tasks.json
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
The terminal process terminated with exit code: 1

1 Ответ

0 голосов
/ 07 июля 2019

Глядя на сообщение об ошибке от ld Я думаю, что tasks.json заставляет компилятор / компоновщик выбрать неправильный исходный файл, например, ld, кажется, обрабатывает ваш /Users/xyz/Workspace/VSCode/.vscode/tasks.json.

Посмотрите описание / пример переменной tasks.json ${file} здесь

Я думаю, у вас есть tasks.json файл , открытый и фокусированный в VSC при запуске сеанса отладки. Поэтому ${file} заменяется этим открытым tasks.json файлом. Пожалуйста, обратите внимание на исходный файл c / c ++ , затем запустите сеанс отладки.

Я не внимательно изучил правильность ваших файлов конфигурации, так как я использую инструменты командной строки Apple clang и lldb, которые поставляются с Xcode. В моем случае VSC предложил и сгенерировал правильные файлы конфигурации по умолчанию для этой среды. Я использую расширение C / C ++ 0.24.0 от Microsoft. (Мне нужно было только добавить "-std=c++11", к args в tasks.json, чтобы Clang распознал c++11 исходный код).

...