Làm cách nào để thiết lập Visual Studio Code để biên dịch mã C ++?


222

Trình soạn thảo Visual Studio Code của Microsoft khá đẹp, nhưng nó không có hỗ trợ mặc định để xây dựng các dự án C ++.

Làm thế nào để tôi cấu hình nó để làm điều này?


12
Có rất nhiều câu trả lời cho việc biên dịch mã C ++ trong Linux, nhưng với Windows thì sao?
Charles Milette

5
Một điều cơ bản như vậy và không có tài nguyên hữu ích để làm điều này trong các cửa sổ. Và phần mở rộng cpptools ms, đừng nói về điều đó. Tôi đoán nó chỉ là để thêm vào sự thất vọng của bạn. Nó không làm gì cả.
Kshitij

Bất cứ ai tìm thấy giải pháp? Tôi có thể biên dịch, nhưng không gỡ lỗi C / C ++ trên VSCode. Bài viết này cho biết gỡ lỗi chỉ được hỗ trợ trên linux. Gần đây tôi đã tạo ra chủ đề này cho cùng. Sẽ đánh giá cao bất kỳ trợ giúp nào ...
Mahesha999

Câu trả lời:


133

Có một cách dễ dàng hơn để biên dịch và chạy mã C ++, không cần cấu hình:

  1. Cài đặt tiện ích mở rộng mã chạy
  2. Mở tệp mã C ++ của bạn trong Trình soạn thảo văn bản, sau đó sử dụng phím tắt Ctrl+Alt+Nhoặc nhấn F1và sau đó chọn / gõ Run Codehoặc bấm chuột phải vào Trình soạn thảo văn bản, sau đó bấm Run Codevào menu ngữ cảnh, mã sẽ được biên dịch và chạy, và đầu ra sẽ được hiển thị trong Cửa sổ đầu ra.

Ngoài ra, bạn có thể cập nhật cấu hình trong settings.json bằng các trình biên dịch C ++ khác nhau mà bạn muốn, cấu hình mặc định cho C ++ như sau:

"code-runner.executorMap": {
    "cpp": "g++ $fullFileName && ./a.out"
}

4
Cửa sổ đầu ra của tôi bị kẹt tại running blablabla. Không nhắc nhở, không có gì. Làm thế nào để tôi thậm chí dừng mã chạy?
Hichigaya Hachiman

11
Để dừng mã chạy, sử dụng Ctrl+Alt+M. Để sử dụng stdin để đọc dữ liệu, bạn có thể truy cập File-> Preference-> Settingsđể đặt "code-runner.runInTerminal": true. Để biết thêm chi tiết, bạn có thể tham khảo github.com/formulahendry/vscode-code-runner/issues/91
Jun Han

1
Chạy trong cửa sổ đầu ra ngăn đầu vào đầu cuối. runInTerminal dường như cần thiết ...
Andrew Wolfe

Gặp lỗi - "lỗi: tên tệp trống trong #include"
gaurav

9
Bạn nên tiết lộ rằng bạn là tác giả của tiện ích mở rộng bạn đang quảng cáo.
Codebling

86

Các nhiệm vụ xây dựng là dự án cụ thể. Để tạo một dự án mới, hãy mở một thư mục trong Visual Studio Code.

Làm theo các hướng dẫn ở đây , nhấn Ctrl+ Shift+ P, gõ Configure Tasks, chọn nó và nhấn Enter.

Tệp task.json sẽ được mở. Dán đoạn mã xây dựng sau vào tệp và lưu nó:

{
    "version": "0.1.0",
    "command": "make",
    "isShellCommand": true,
    "tasks": [
        {
            "taskName": "Makefile",

            // Make this the default build command.
            "isBuildCommand": true,

            // Show the output window only if unrecognized errors occur.
            "showOutput": "always",

            // Pass 'all' as the build target
            "args": ["all"],

            // Use the standard less compilation problem matcher.
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": ["relative", "${workspaceRoot}"],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ]
}

Bây giờ, hãy vào menu TệpTùy chọnPhím tắt và thêm ràng buộc phím sau cho tác vụ xây dựng:

// Place your key bindings in this file to overwrite the defaults
[
    { "key": "f8",          "command": "workbench.action.tasks.build" }
]

Bây giờ khi bạn nhấn F8Makefile sẽ được thực thi và các lỗi sẽ được gạch chân trong trình chỉnh sửa.


8
CẢNH BÁO - định dạng của tệp này đã thay đổi và điều này không còn đúng nữa. Xem: go.microsoft.com/fwlink/?LinkId=733558
điểm dừng

Khóa mặc định ctrl+alt+bdành cho tác vụ xây dựng.
nguy hiểm89

Có một lệnh hoặc ràng buộc sẽ nhảy đến lỗi tiếp theo / trước trong thiết bị đầu cuối ? Tôi có một tình huống trong đó ngăn "Vấn đề" có một loạt các vấn đề không liên quan (vì VS Code không thực sự biết cách xây dựng dự án của tôi - và nó sẽ quá liên quan để dạy nó) nhưng "Terminal" của tôi thì đầy lỗi hữu ích sau khi xây dựng. Tôi chỉ cần một phím tắt để chuyển sang lỗi tiếp theo trong "Terminal" ...
Dan L

47

Một ví dụ về tác vụ makefile cho phiên bản 2.0.0 task.json mới.

Trong đoạn trích dưới đây một số ý kiến ​​tôi hy vọng chúng sẽ hữu ích.

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "<TASK_NAME>",
            "type": "shell",
            "command": "make",
            // use options.cwd property if the Makefile is not in the project root ${workspaceRoot} dir
            "options": {
                "cwd": "${workspaceRoot}/<DIR_WITH_MAKEFILE>"
            },
            // start the build without prompting for task selection, use "group": "build" otherwise
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            // arg passing example: in this case is executed make QUIET=0
            "args": ["QUIET=0"],
            // Use the standard less compilation problem matcher.
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": ["absolute"],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ]
}

2
Vẫn cập nhật vào tháng 11 năm 2018. Cảm ơn!
Nội bộ

Trong thư mục nào bạn đã đặt này? Thư mục gốc, ".vs" hoặc ".vscode"? Giả sử, gốc không gian làm việc là vị trí được đề xuất duy nhất nếu tệp cũng đi vào kiểm soát sửa đổi (mà tôi đặc biệt khuyên dùng), nhưng tôi không thể làm cho nó hoạt động.
điểm dừng

Đối với những gì tôi biết, nơi duy nhất hợp lệ tại thời điểm này là .vscode. Đối với điều khiển sửa đổi git, một khả năng là sử dụng cho .gitignoremột mẫu như thế nào !.vscode/tasks.json.
attdona

14

Đây là cách tôi định cấu hình VS cho C ++

Đảm bảo thay đổi đường dẫn phù hợp đến nơi cài đặt MinGW của bạn

launch.json

{
   "version": "0.2.0",
   "configurations": [
       {
           "name": "C++ Launch (GDB)",                
           "type": "cppdbg",                         
           "request": "launch",                        
           "targetArchitecture": "x86",                
           "program": "${workspaceRoot}\\${fileBasename}.exe",                 
           "miDebuggerPath":"C:\\mingw-w64\\bin\\gdb.exe", 
           "args": [],     
           "stopAtEntry": false,                  
           "cwd": "${workspaceRoot}",                  
           "externalConsole": true,                  
           "preLaunchTask": "g++"                    
           }
   ]
}

task.json

{
    "version": "0.1.0",
    "command": "g++",
    "args": ["-g","-std=c++11","${file}","-o","${workspaceRoot}\\${fileBasename}.exe"],
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}

c_cpp_properIES.json

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceRoot}",
                "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++",
                "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32",
                "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward",
                "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
                "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/tr1",
                "C:/mingw-w64/x86_64-w64-mingw32/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__GNUC__=6",
                "__cdecl=__attribute__((__cdecl__))"
            ],
            "intelliSenseMode": "msvc-x64",
            "browse": {
                "path": [
                    "${workspaceRoot}",
                    "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++",
                    "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/x86_64-w64-mingw32",
                    "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/backward",
                    "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include",
                    "C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include/c++/tr1",
                    "C:/mingw-w64/x86_64-w64-mingw32/include"
                ]
            },
            "limitSymbolsToIncludedHeaders": true,
            "databaseFilename": ""
        }
    ],
    "version": 3
}

Tài liệu tham khảo:

  1. C / C ++ cho mã VS

  2. mẫu c_cpp_properIES.json


13
có lẽ bạn cũng muốn giải thích một chút những gì cài đặt của bạn đang làm và không chỉ sao chép nội dung dán
uitty400

2
thật khó để tôi giải thích các thiết lập của mình.
Li Kui

Đảm bảo thay đổi đường dẫn phù hợp đến nơi cài đặt MinGW của bạn.
Anthony Lei

Bạn cũng có thể bao gồm các thư mục con đệ quy với / ** thay vì lặp lại các thư mục con khác nhau trong"C:/mingw-w64/lib/gcc/x86_64-w64-mingw32/7.2.0/include"
Lorenz

10

Để Xây dựng / chạy các dự án C ++ trong mã VS, bạn cần phải định cấu hình tệp task.json theo cách thủ công trong thư mục .vscode trong thư mục không gian làm việc. Để mở task.json , nhấn ctrl + shift + P và nhập Cấu hình tác vụ và nhấn enter , nó sẽ đưa bạn đến task.json

Ở đây tôi đang cung cấp cho tệp task.json của mình một số nhận xét để làm cho tệp dễ hiểu hơn. Nó có thể được sử dụng làm tài liệu tham khảo để định cấu hình task.json , tôi hy vọng nó sẽ hữu ích

task.json

{
    "version": "2.0.0",

    "tasks": [

        {
            "label": "build & run",     //It's name of the task , you can have several tasks 
            "type": "shell",    //type can be either 'shell' or 'process' , more details will be given below
            "command": "g++",   
            "args": [
                "-g",   //gnu debugging flag , only necessary if you want to perform debugging on file  
                "${file}",  //${file} gives full path of the file
                "-o",   
                "${workspaceFolder}\\build\\${fileBasenameNoExtension}",    //output file name
                "&&",   //to join building and running of the file
                "${workspaceFolder}\\build\\${fileBasenameNoExtension}"
            ],
            "group": {
                "kind": "build",    //defines to which group the task belongs
                "isDefault": true
            },
            "presentation": {   //Explained in detail below
                "echo": false,
                "reveal": "always",
                "focus": true,
                "panel": "shared",
                "clear": false,
                "showReuseMessage": false
            },
            "problemMatcher": "$gcc"
        },

    ]
}

Bây giờ, nêu trực tiếp từ tài liệu nhiệm vụ mã VS

mô tả thuộc tính loại :

  • loại : Loại nhiệm vụ. Đối với một tác vụ tùy chỉnh, đây có thể là shell hoặc process. Nếu shell được chỉ định, lệnh được hiểu là lệnh shell (ví dụ: bash, cmd hoặc PowerShell). Nếu quy trình được chỉ định, lệnh được hiểu là một quy trình để thực thi.

Hành vi của thiết bị đầu cuối có thể được kiểm soát bằng cách sử dụng thuộc tính trình bày trong task.json . Nó cung cấp các thuộc tính sau:

  • tiết lộ : Kiểm soát xem bảng tích hợp Terminal được đưa ra phía trước. Các giá trị hợp lệ là:

    • luôn luôn - Bảng điều khiển luôn được đưa ra phía trước. Đây là mặc định
    • không bao giờ - Người dùng phải đưa bảng điều khiển thiết bị đầu cuối lên phía trước một cách rõ ràng bằng lệnh View> Terminal (Ctrl + `).
    • im lặng - Bảng điều khiển thiết bị đầu cuối chỉ được đưa ra phía trước nếu đầu ra không được quét để tìm lỗi và cảnh báo.
  • tập trung : Kiểm soát xem thiết bị đầu cuối có lấy tiêu điểm đầu vào hay không. Mặc định là sai.

  • echo : Điều khiển xem lệnh đã thực hiện có được lặp lại trong terminal không. Mặc định là đúng.
  • showReuseMessage : Kiểm soát xem có hiển thị thông báo "Terminal sẽ được sử dụng lại bởi các tác vụ hay không, nhấn bất kỳ phím nào để đóng nó".
  • bảng điều khiển : Kiểm soát xem phiên bản đầu cuối được chia sẻ giữa các lần chạy tác vụ. Các giá trị có thể là:
    • đã chia sẻ : Thiết bị đầu cuối được chia sẻ và đầu ra của các tác vụ khác được thêm vào cùng một thiết bị đầu cuối.
    • dành riêng : Thiết bị đầu cuối được dành riêng cho một nhiệm vụ cụ thể. Nếu tác vụ đó được thực hiện lại, thiết bị đầu cuối được sử dụng lại. Tuy nhiên, đầu ra của một nhiệm vụ khác nhau được trình bày trong một thiết bị đầu cuối khác.
    • mới : Mỗi lần thực hiện tác vụ đó đều sử dụng thiết bị đầu cuối sạch mới.
  • xóa: Kiểm soát xem thiết bị đầu cuối có bị xóa trước khi tác vụ này được chạy không. Mặc định là sai.

9

Vì thất vọng vì thiếu tài liệu rõ ràng, tôi đã tạo một dự án Mac trên github chỉ hoạt động (cả xây dựng và gỡ lỗi):

vscode-mac-c-ví dụ

Lưu ý rằng nó yêu cầu XCode và phần mở rộng cpptools của VSCode Microsoft.

Tôi dự định làm tương tự cho Windows và linux (trừ khi Microsoft viết tài liệu đàng hoàng trước ...).


8

Trước hết, tiện ích mở rộng goto (Ctrl + Shift + X) và cài đặt 2 tiện ích mở rộng:

  1. Người chạy mã
  2. C / C ++

Sau đó, sau đó tải lại Mã VS và chọn nút phát ở trên cùng của góc phải chương trình của bạn chạy trong thiết bị đầu cuối. Bạn có thể thấy đầu ra bằng Ctrl + Alt + N. Để thay đổi các tính năng khác cài đặt người dùng goto. nhập mô tả hình ảnh ở đây


Đây là một sự lặp lại của câu trả lời trước đó.
JDługosz

5

Nếu dự án của bạn có cấu hình CMake, bạn có thể dễ dàng thiết lập VSCode, ví dụ như thiết lập tasks.jsonnhư dưới đây:

{
    "version": "0.1.0",
    "command": "sh",
    "isShellCommand": true,
    "args": ["-c"],
    "showOutput": "always",
    "suppressTaskName": true,
    "options": {
        "cwd": "${workspaceRoot}/build"
    },
    "tasks": [
        {
            "taskName": "cmake",
            "args": ["cmake ."]
        },
        {
            "taskName": "make",
            "args" : ["make"],
            "isBuildCommand": true,
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": "absolute",
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ]
}

Điều này giả định rằng có một thư mục buildtrong thư mục gốc của không gian làm việc với cấu hình CMake.

Ngoài ra còn có một phần mở rộng tích hợp CMake có thêm lệnh "CMake build" cho VScode.

Tái bút Đây problemMatcherlà thiết lập cho clang-builds. Để sử dụng GCC Tôi tin rằng bạn cần phải thay đổi fileLocationđể relative, nhưng tôi đã không kiểm tra này.


5

Đây là cách tôi định cấu hình VS cho C ++ bằng trình biên dịch g ++ và nó hoạt động rất tốt bao gồm các tùy chọn gỡ lỗi:

tập tin task.json

{
    "version": "0.1.0",
    "command": "g++",
    "isShellCommand": true,
    // compiles and links with debugger information
    "args": ["-g", "-o", "hello.exe", "hello.cpp"],
    // without debugger information
    // "args": ["-o", "hello.exe", "hello.cpp"],
    "showOutput": "always"
}

tập tin launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "C++ Launch (Windows)",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceRoot}/hello.exe",
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\MinGw\\bin\\gdb.exe",
            "stopAtEntry": false,
            "cwd": "${workspaceRoot}",
            "externalConsole": false,
            "visualizerFile": "${workspaceRoot}/my.natvis"
        }
    ]
}

Tôi cũng đã cài đặt tiện ích mở rộng 'C / C ++ cho Visual Studio Code' trong Mã VS


Tôi có thể biên dịch, nhưng không gỡ lỗi C / C ++ trên VSCode. Bài viết này cho biết gỡ lỗi chỉ được hỗ trợ trên linux. Gần đây tôi đã tạo ra chủ đề này cho cùng. Sẽ đánh giá cao bất kỳ trợ giúp nào ...
Mahesha999

5

Vấn đề cơ bản ở đây là việc xây dựng và liên kết chương trình C ++ phụ thuộc rất nhiều vào hệ thống xây dựng đang sử dụng. Bạn sẽ cần hỗ trợ các tác vụ riêng biệt sau, sử dụng một số kết hợp bổ trợ và mã tùy chỉnh:

  1. Hỗ trợ ngôn ngữ chung C ++ cho biên tập viên. Điều này thường được thực hiện bằng cách sử dụng ms-vscode.cpptools, mà hầu hết mọi người mong đợi cũng sẽ xử lý rất nhiều thứ khác, như hỗ trợ xây dựng. Hãy để tôi giúp bạn tiết kiệm thời gian: nó không. Tuy nhiên, dù sao bạn cũng sẽ muốn nó.

  2. Xây dựng, làm sạch và xây dựng lại các nhiệm vụ. Đây là nơi lựa chọn hệ thống xây dựng của bạn trở thành một thỏa thuận lớn. Bạn sẽ tìm thấy các plugin cho những thứ như CMake và Autoconf (thần giúp bạn), nhưng nếu bạn đang sử dụng một cái gì đó như Meson và Ninja, bạn sẽ phải viết một số tập lệnh trợ giúp và định cấu hình tệp "task.json" tùy chỉnh để xử lý những điều này. Microsoft đã thay đổi hoàn toàn mọi thứ về tập tin đó trong vài phiên bản gần đây, ngay đến những gì nó được gọi là và địa điểm (vâng, địa điểm) mà nó có thể đi, để nói rằng không có gì thay đổi hoàn toàn định dạng. Tồi tệ hơn, họ đã NGHIÊM TRỌNG khả năng tương thích ngược, để chắc chắn sử dụng phím "phiên bản" để chỉ định biến thể bạn muốn. Xem chi tiết tại đây:

https://code.visualstudio.com/docs/editor/t task

... nhưng lưu ý xung đột với:

https://code.visualstudio.com/docs/lacular/cpp

CẢNH BÁO: TRONG TẤT CẢ CÁC CÂU TRẢ LỜI DƯỚI ĐÂY, BẤT CỨ ĐIỀU NÀO BẮT ĐẦU VỚI TAG "PHIÊN BẢN" DƯỚI ĐÂY 2.0.0 LÀ HẤP DẪN.

Đây là thứ gần nhất tôi có lúc này. Lưu ý rằng tôi loại bỏ hầu hết các kịch bản nặng nề, điều này thực sự không mang lại cho tôi bất kỳ mục trình đơn nào tôi có thể sống và không có cách nào tốt để chọn giữa gỡ lỗi và phát hành mà không cần thực hiện ba mục rõ ràng khác trong đây. Với tất cả những gì đã nói, đây là những gì tôi có thể chịu đựng dưới dạng tệp .vscode / task.json của mình tại thời điểm này:

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
    {
        "label": "build project",
        "type": "shell",
        "command": "buildscripts/build-debug.sh",
        "args": [],

        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            // Reveal the output only if unrecognized errors occur.
            "echo": true,
            "focus": false,
            "reveal": "always",
            "panel": "shared"
        },

        // Use the standard MS compiler pattern to detect errors, warnings and infos
        "options": {
            "cwd": "${workspaceRoot}"
        },
        "problemMatcher": {
            "owner": "cpp",
            "fileLocation": ["relative", "${workspaceRoot}/DEBUG"],
            "pattern": {
                "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                "file": 1,
                "line": 2,
                "column": 3,
                "severity": 4,
                "message": 5
            }
        }
    },
    {
        "label": "rebuild project",
        "type": "shell",
        "command": "buildscripts/rebuild-debug.sh",
        "args": [],
        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            // Reveal the output only if unrecognized errors occur.
            "echo": true,
            "focus": false,
            "reveal": "always",
            "panel": "shared"
        },

        // Use the standard MS compiler pattern to detect errors, warnings and infos
        "options": {
            "cwd": "${workspaceRoot}"
        },
        "problemMatcher": {
            "owner": "cpp",
            "fileLocation": ["relative", "${workspaceRoot}/DEBUG"],
            "pattern": {
                "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                "file": 1,
                "line": 2,
                "column": 3,
                "severity": 4,
                "message": 5
            }
        }
    },
    {
        "label": "clean project",
        "type": "shell",
        "command": "buildscripts/clean-debug.sh",
        "args": [],

        "group": {
            "kind": "build",
            "isDefault": true
        },
        "presentation": {
            // Reveal the output only if unrecognized errors occur.
            "echo": true,
            "focus": false,
            "reveal": "always",
            "panel": "shared"
        },

        // Use the standard MS compiler pattern to detect errors, warnings and infos
        "options": {
            "cwd": "${workspaceRoot}"
        },
        "problemMatcher": {
            "owner": "cpp",
            "fileLocation": ["relative", "${workspaceRoot}/DEBUG"],
            "pattern": {
                "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                "file": 1,
                "line": 2,
                "column": 3,
                "severity": 4,
                "message": 5
            }
        }
    }
]

}

Lưu ý rằng, về mặt lý thuyết, tệp này được cho là hoạt động nếu bạn đặt nó trong thư mục gốc của vùng làm việc, để bạn không bị kẹt kiểm tra các tệp trong các thư mục ẩn (.vscode) vào hệ thống kiểm soát sửa đổi của bạn. Tôi chưa thấy rằng thực sự làm việc; kiểm tra nó, nhưng nếu thất bại, hãy đặt nó vào .vscode. Dù bằng cách nào, IDE sẽ chê bai nếu nó không có ở đó. . trường hợp của tôi, meson, và xây dựng bên trong nó (sử dụng, trong trường hợp của tôi, ninja).

  1. Chạy, gỡ lỗi, đính kèm, tạm dừng. Đây là một nhóm tác vụ khác, được định nghĩa trong "launch.json". Hoặc ít nhất họ đã từng. Microsoft đã tạo ra một hàm băm như vậy của tài liệu, tôi thậm chí không chắc nữa.

Đây là ví dụ về tệp build-scripts / build-debug.sh. Lý tưởng nhất là chúng sẽ kế thừa bối cảnh xây dựng (gỡ lỗi, phát hành, định hình, v.v.) nhưng tôi không thể tìm ra cách Code quản lý điều đó, nếu nó thậm chí còn có khái niệm. Xin lỗi định dạng; đi, StackOverflow, đi. #! / bin / bash nếu [! -d "DEBUG"]; sau đó mkdir DEBUG meson DEBUG fi cd DEBUG ninja nếu [$? -eq 0]; sau đó thoát 0 khác thoát $? fi
điểm dừng

Ồ, một lần nữa: nhấn CTRL-SHIFT-B sau khi điều này được thực hiện để mở các tác vụ xây dựng. Tôi thực sự, thực sự thích một menu chính phù hợp với đầy đủ những thứ này, nhưng tôi chưa tìm ra cách để làm điều đó.
điểm dừng

4

Với Mã VS được cập nhật, bạn có thể thực hiện theo cách sau:

  1. Lượt ( Ctrl+ P) và gõ:

    ext install cpptools
    
  2. Mở thư mục ( Ctrl+ K& Ctrl+ O) và tạo một tệp mới bên trong thư mục có phần mở rộng .cpp (ví dụ: hello.cpp ):

  3. Nhập mã của bạn và nhấn lưu.

  4. Nhấn ( Ctrl+ Shift+ Pvà gõ, Configure task runnersau đó chọn otherở cuối danh sách.

  5. Tạo một tệp bó trong cùng một thư mục có tên build.bat và bao gồm đoạn mã sau vào phần thân của tệp:

    @echo off
    call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64     
    set compilerflags=/Od /Zi /EHsc
    set linkerflags=/OUT:hello.exe
    cl.exe %compilerflags% hello.cpp /link %linkerflags%
    
  6. Chỉnh sửa tệp task.json như sau và lưu nó :

    {
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "build.bat",
    "isShellCommand": true,
    //"args": ["Hello World"],
    "showOutput": "always"
    }
    
  7. Nhấn ( Ctrl+ Shift+ Bđể chạy tác vụ Build. Điều này sẽ tạo các tệp .obj.exe cho dự án.

  8. Để gỡ lỗi dự án, nhấn F5và chọn C ++ (Windows) .

  9. Trong tệp launch.json , chỉnh sửa dòng sau và lưu tệp:

    "program": "${workspaceRoot}/hello.exe",
    
  10. Trúng F5.


Tôi đang sử dụng VSC mới nhất. Bạn đã mất tôi ở Bước 4. Cấu hình tác vụ chạy không khả dụng.
Louis


2

Có thể sử dụng mở rộng Mã Runner để chạy mã với biểu tượng chơi trên ans Ngay đầu bởi phím tắt: Ctrl+Alt+Nvà để hủy bỏ Ctrl+Alt+M. Nhưng theo mặc định, nó chỉ hiển thị đầu ra của chương trình nhưng để nhận đầu vào, bạn cần làm theo một số bước:

Ctrl +, và sau đó menu cài đặt mở ra và Tiện ích mở rộng> Chạy Cấu hình mã cuộn xuống các thuộc tính của nó và tìm Chỉnh sửa trong settings.json, nhấp vào nó và thêm mã sau đây vào nó:

{ "code-runner.runInTerminal": true }


Ctrl + phóng to cho tôi
MM

đó là dấu phẩy không phải là ctrl cộng với để mở cài đặt
Ashley Fernandes

1

Hiện đã có phần mở rộng ngôn ngữ C / C ++ của Microsoft. Bạn có thể cài đặt nó bằng cách vào phần "mở nhanh" ( Ctrl+ p) và gõ:

ext install cpptools

Bạn có thể đọc nó ở đây:

https://bloss.msdn.microsoft.com/vcblog/2016/03/31/cc-extension-for-visual-studio-code/

Nó rất cơ bản, kể từ tháng 5 năm 2016.


2
Đây là một câu trả lời chỉ liên kết đường biên giới . Bạn nên mở rộng câu trả lời của mình để bao gồm nhiều thông tin ở đây và chỉ sử dụng liên kết để tham khảo.
jhpratt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.