2016-05-09 24 views
5

Tôi biết rằng chúng ta có thể biên dịch chương trình như C++ bằng cách sử dụng trình biên dịch g ++. Nhưng trình biên dịch g ++ mặc định là phiên bản 98. Để chạy nó như C++ 14, chúng ta cần thêm -std=c++14 vào terminal.Chương trình biên dịch như C++ 14 trong Sublime Text 3 là mặc định

Văn bản tuyệt vời được coi là trình chỉnh sửa có giá trị cho lập trình cạnh tranh do trọng lượng và tính năng nhẹ của nó. Trong những cuộc thi thời gian là quan trọng và do đó thời gian là lãng phí trong việc sao chép trong tập tin văn bản và sau đó chạy từ thiết bị đầu cuối. C++ 14 có một thư viện phong phú và các tính năng quan trọng khác so với 98. Vì vậy, người ta mong muốn có thể biên dịch mã trên văn bản tuyệt vời và như C++ 14.

Nhưng làm thế nào tôi có thể chắc chắn rằng khi tôi biên dịch mã trong Sublime Text 3, nó biên dịch như là mặc định cho C++ 14?

Sau khi một số quan trọng xung quanh tôi đã đưa ra các giải pháp sau đây -.

  1. Tới gói và giải nén C++ tuyệt vời gói
  2. Open C++ Độc File.sublime-xây dựng
  3. Thay đổi

    "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"" 
    

    đến

    "shell_cmd": "g++ -std=c++14 \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\"" 
    

    Added -std=c++14 trong cả xây dựng và chạy

  4. Lưu nó và ghi đè lên gói ban đầu trong văn bản Sublime 3

Đây có phải là cách đúng đắn để làm như vậy? Nó được đặt tên là tập tin duy nhất - Đây có phải là điều lo lắng nếu tôi muốn sử dụng nhiều tệp không?

Trả lời

5

Nó tốt hơn để tạo ra một hệ thống xây dựng mới, dưới đây là cách:

Bấm vào Tools -> Build System -> New Build System.

Đây là những gì tôi sử dụng (chú ý lá cờ -std=c++14)

{ 
"cmd":["bash", "-c", "g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"], 
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
"working_dir": "${file_path}", 
"selector": "source.c, source.c++", 
"variants": 
[ 
    { 
    "name": "Run", 
    "cmd":["bash", "-c", "g++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
    } 
] 
} 

(Tôi tin rằng bạn chỉ có thể sử dụng dòng bạn đã có và lưu nó vào một tập tin xây dựng hệ thống mới.)

Bây giờ lưu bản dựng mới, chọn nó trong Tools -> Build System.
Và giờ đây, bạn có thể tạo và chạy với CTRL + B

+0

Điều gì về việc biên dịch nhiều tệp - chẳng hạn như các gói. Tôi có nên lo lắng về nó như tên tập tin (C++ Single File.sublime-xây dựng) cho thấy nó sẽ chỉ được cho tập tin duy nhất? –

1

Thông thường, bạn không thể chỉnh sửa các tệp mặc định. Chỉ cần tạo một hệ thống xây dựng mới Pallet -> Xây dựng: Hệ thống Xây dựng Mới thêm các thay đổi của bạn ở đó và lưu nó theo ý muốn. Sau đó, khi bạn muốn sử dụng nó chỉ cần chọn Build Với: (tên xây dựng hệ thống mới) Nếu bạn cũng muốn xây dựng - Tùy chọn Run, sử dụng mã này để thay thế:

{ 
"cmd": ["g++", "-std=c++14", "${file}", "-o", "${file_path}/${file_base_name}"], 
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", 
"working_dir": "${file_path}", 
"selector": "source.c, source.c++", 
"variants": 
[ 
    { 
    "name": "Run", 
    "cmd":["bash", "-c", "g++ -std=c++1y '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"] 
    } 
] 

} 
+0

_-std = C++ 1y giống như -std = C++ 14_ Không. – erip

+0

Điều gì về việc biên dịch nhiều tệp - chẳng hạn như gói. Tôi có nên lo lắng về nó như tên tập tin cho thấy nó sẽ chỉ cho một tập tin? –

+0

@erip sự khác biệt betwen -std = C++ 14 và -std = C++ 1y –

0

Cách tốt nhất để chỉnh sửa tập tin mặc định là sử dụng PackageResourceViewer.

Sau khi cài đặt, hãy chạy lệnh PackageResourceViewer: Open Resource từ command palette. Bạn sẽ được hiển thị danh sách các gói mà bạn có thể điều hướng vào để chọn tệp bạn muốn chỉnh sửa.

Các tập tin được lựa chọn sẽ được mở ra trong một tài liệu mới, và bất kỳ thay đổi sẽ được lưu vào một tập tin mới tọa lạc tại Packages/PackageThatYouEdited/FileThatYouEdited.ext

Lợi ích của phương pháp này là các tập tin chỉnh sửa trong Packages bây giờ sẽ ghi đè lên tập tin gốc nằm trong tệp sublime-package nhưng tệp gốc vẫn giữ nguyên. Nếu bạn chọn xóa tệp đã chỉnh sửa, tệp gốc trong sublime-package một lần nữa sẽ hoạt động.

Các vấn đề liên quan