Biên dịch ngôn ngữ C với các tùy chọn khác nhau qua VScode?

Biên dịch ngôn ngữ C với các tùy chọn khác nhau qua VScode?

Chia sẻ kiến thức 01/12/2021

Có cách nào để làm cho vscode thực thi theo Makefile ngôn ngữ C không? Cài đặt như vậy có thể tự động sử dụng phương pháp này khi tôi sử dụng SSH để thêm thư mục trên máy chủ vào không gian làm việc mà không cần phải cấu hình lại nó mỗi lần không?

Một số câu lệnh ngôn ngữ C sử dụng thư viện động, vì vậy tôi cần sử dụng -ldm. Một số bao gồm các thư viện tĩnh khác và cần sử dụng -I để chỉ định thư mục. Nhưng trong vscode thì cấu hình chung trực tiếp GCC source file -o target file nên không thực thi được bình thường. Có cách nào để làm cho vscode thực thi theo Makefile ngôn ngữ C không? Cài đặt như vậy có thể tự động sử dụng phương pháp này khi tôi sử dụng SSH để thêm thư mục trên máy chủ vào không gian làm việc mà không cần phải cấu hình lại nó mỗi lần không?

1. Xác định các nhiệm vụ tasks.json để biên dịch ngôn ngữ C qua VSCode

Trên thực tế nó có thể có VSCode làm việc với make trên linux hoặc msbuild.exe trên windows. Bạn cũng có thể có các cấu hình khác nhau trong các cấu hình này để bạn có một bản Debug dựng hoặc một bản Release dựng. Tất cả những gì bạn cần làm là xác định các nhiệm vụ phù hợp tasks.json. Ví dụ, hãy xem xét:

{

  "label": "lindbgbuild",

   "type": "shell",

   "command": "make",

   "args": [

   "CONF=Debug",

   "-C",

   "./.vscode"

   ],

   "group": "build",

   "problem Matcher": []

   },

  {

  "label": "linreleasebuild",

  "type": "shell",

 "command": "make",

  "args": [

  "CONF=Release",

 "-C",

 "./.vscode"

  ],

 "group": "build"

 },

 {

 "label": "winbuilddebug",

 "type": "shell",

  "command": "msbuild",

  "args": [

  ".vscode/windows.vcxproj",

  "/property:GenerateFullPaths=true",

   "/property:Configuration=Debug",

 "/property:Platform=x64",

   "/t:build",

 "/consoleloggerparameters:NoSummary"

  ],

 "group": "build",

  "presentation": {

 "reveal": "silent"

  },

  "problemMatcher": "$msCompile"

  },

 {

 "label": "winbuildrelease",

 "type": "shell",

 "command": "msbuild",

"args": [

 ".vscode/windows.vcxproj",

  "/property:GenerateFullPaths=true",

  "/property:Configuration=Release",

  "/property:Platform=x64",

   "/t:build",

  "/consoleloggerparameters:NoSummary"

   ],

  "group": "build",

   "presentation": {

  "reveal": "silent"

    },

  "problemMatcher": "$msCompile"

   }

Có 4 nhiệm vụ trong tasks.json. Bao gồm:

1.1. lindbgbuild cái nào thực thi lệnh make CONF=Debug -C ./.vscode

Điều mà lệnh này giả định là sự tồn tại của Makefile trong ./.vscode thư mục con của thư mục (dự án) hiện tại. Sau đó, nó thực thi Debug cấu hình bên trong nó. Tiếp theo, link release_build làm tương tự cho Release cấu hình. Vì vậy, những gì chúng ta đã hoàn thành là chúng ta có thể chạy một lệnh trừu tượng make và sau đó lệnh này sẽ gọi cấu hình thích hợp được chỉ định bên trong Makefile. Tất cả các lệnh như g++ -c -o -g -I, v.v., đều có thể cấu hình bên ngoài VSCode trong một tệp tạo riêng biệt mà VSCode chỉ gọi.

=> Tham khảo: Các ứng dụng cần biết của ngôn ngữ lập trình C

1.2. winbuilddebug

Ngôn ngữ C

Điều này giả định sự tồn tại của .vcxproj tệp cấu hình dự án trong ./.vscode. Sau đó, nó thực thi cấu hình thích hợp với các tùy chọn được cung cấp (trong trường hợp này, cấu hình đang Debug bật x64). 

1.3. winbuildrelease

Tương tự, winbuild release đối với Release cấu hình trong Windows. .vcxproj được tạo tự động bởi Visual Studio IDE và các tệp make files trên linux có thể được tạo bằng cách xây dựng dự án bằng IDE chẳng hạn Netbeans. 

1.4. Sửa đổi các tệp makefiles / .vcxproj 

Bạn có thể sửa đổi các tệp makefiles/ .vcxproj có trước từ các dự án đã có trước khác cho phù hợp với dự án hiện tại của mình. Tôi khuyên bạn nên chống lại điều này và sử dụng IDE cho bản dựng ban đầu của bạn vì nó tự động hóa mà không có nhiều lỗi cài đặt.

Với điều này đã cho tasks.json, làm thế nào để bạn truy cập các nhiệm vụ này? Khi nhấn Ctrl Shift B, nó sẽ mở ra Select Build Tasks to Run hộp thoại nơi bạn có thể chọn tác vụ bạn muốn chạy tùy thuộc vào Hệ điều hành / Nền tảng / trình biên dịch nào bạn đang sử dụng.

=> Xem thêm: Các ứng dụng ngôn ngữ lập trình C bạn cần biết

2. Cách tự động hóa biên dịch ngôn ngữ C và khởi chạy

Có cách nào để tự động hóa bước này và khởi chạy không? Thật vậy, sau đây là một ví dụ của launch.json. Hãy xem xét cấu hình sau:

      {

            "name": "(Windows)RelLaunch",

            "type": "cppvsdbg",

            "request": "launch",

            "program": ".vscode/x64/Release/windows.exe",

            "args": [],

            "preLaunchTask": "winbuildrelease",

            "stopAtEntry": false,

            "cwd": "${workspaceFolder}",

            "environment": [],

            "externalConsole": false,

            "internalConsoleOptions": "openOnSessionStart",

        }

Thao tác này build sau đó sẽ khởi chạy ứng dụng (giả sử không có lỗi xây dựng). Nó chọn cấu hình xây dựng nào? Nó sẽ chọn winbuild release cấu hình đã được chỉ định. Như thế này, nếu bạn đang gỡ lỗi và muốn xem qua mã, bạn sẽ có một cấu hình khác.

Làm thế nào để bạn chọn cấu hình để khởi chạy? Đánh Ctrl Shift D. Thao tác này sẽ mở ra Run thanh bên, nơi trên cùng, bạn có thể chọn trong số các cấu hình bạn đã chỉ định trong launch.json của mình .

Nguyễn Vân Anh (theo Stack Overflow

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!