Partage de technologie

Configurer le compilateur C (.sublime-build) dans sublime pour implémenter l'utilisation de C 20 dans sublime, tutoriel novice

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. Préparation préliminaire

Nous devons d'abord préparer l'environnement C++. Bien sûr, si vous estimez que votre environnement C++ actuel est configuré et que la version C++ peut répondre à vos besoins quotidiens, vous pouvez utiliser les deux commandes suivantes pour interroger la version C++.

g++ -v
  • 1
g++ --version
  • 1

Jugez simplement si vos besoins peuvent être résolus par la version renvoyée. Si vous pensez que la version actuelle peut prendre en charge votre utilisation ultérieure, veuillez passer directement à la deuxième étape de configuration du fichier JSON.

  • GCC 4.8: Prise en charge de C++11 (partielle)
  • GCC 4.9: Prend en charge C++11 et C++14 (partiel)
  • GCC 5: Prise en charge complète de C++14
  • GCC 6: Prend en charge C++14 et C++17 (partiel)
  • GCC 7: Prend en charge C++17 (principalement)
  • GCC 8: Prend entièrement en charge C++17, prend en charge partiellement C++20
  • GCC 9: Prend en charge plus de fonctionnalités C++20
  • GCC 10: Prend en charge la plupart des fonctionnalités C++20
  • GCC 11: Prise en charge plus complète de C++20
  • GCC 12: Prend en charge presque toutes les fonctionnalités C++20
  • GCC 13 et versions ultérieures: Ajoutez la prise en charge complète de C++20 et démarrez la prise en charge de C++23

Si vous constatez que vous n'avez pas configuré votre C++ ou si vous pensez que la version actuelle ne peut pas prendre en charge l'apprentissage quotidien, vous devez alors télécharger unMingw configure l'environnement C++

Actuellement, j'utilise mon dernier Mingw actuel comme démonstration

![[Image collée 20240711232026.png]]

Après le téléchargement, décompressez-le dans un dossier que vous connaissez, ouvrez le chemin du fichier décompressé et recherchez un fichier bin.

[[Image collée 20240711232411.png]]

Après l'avoir ouvert, copiez le chemin du fichier ci-dessus. Il est préférable d'utiliser le chemin complet en anglais lors de la décompression.

e.g. : D:ProgramFilesmingw64bin
  • 1
  1. Modifier les variables d'environnement système

Image collée 20240711232650

  1. Variables d'environnement…
    ![[Image collée 20240711232725.png]]

  2. Modifiez le contenu dans Chemin ci-dessous, Édition-> Nouveau, placez le chemin vers le haut, sélectionnez ce chemin et déplacez-le vers le haut.
    ![[Image collée 20240711232813.png]]

  3. Continuez à cliquer sur OK pour terminer.

Je teste la version g++.

2. Configuration de l'environnement

Outils -> Système de compilation-----> Nouveau système de compilation... générera un fichier *.sublime-build dans lequel le fichier C++ JSON est configuré. Bien entendu, vous pouvez également modifier le fichier de compilation existant.

1. Méthode de configuration stupide

Copiez le code suivant dans le fichier mentionné ci-dessus, enregistrez-le et sélectionnez à nouveau le fichier JSON que vous venez de modifier pour compiler C++.

{  
   "shell_cmd": "g++  -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. Méthode de configuration de base

par défaut,g++ Les compilateurs n'utilisent généralement pas la dernière norme C++, mais utilisent plutôt une norme stable par défaut (généralement une norme plus ancienne telle que C++14 ou C++17) pour garantir la compatibilité avec le code plus ancien.Donc, si vous ne spécifiez pas explicitement-std=c++20 ou-std=c++23, le compilateur peut compiler à l'aide d'une ancienne norme, ce qui peut provoquer des erreurs lors de l'utilisation des fonctionnalités de la nouvelle norme.

Par conséquent, si nous souhaitons utiliser la dernière méthode de compilation, nous devons nous référer à ce qui précède, la version maximale de C++ supportée par notre compilateur, afin de mettre à jour notre fichier JSON pour compiler avec la dernière version de C++.

{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Le changement spécifique n'est qu'une seule ligne de code

![[Image collée 20240711234819.png]]

3. Analyse approfondie

Éléments de configuration de base

{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
Créer des variations de texte
{
	[  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       }  
   ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
total
{  
   "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
   "variants":  
   [  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall "${file_name}" -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c ""${file_base_name}" & pause""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o "${file_base_name}" && start cmd /c ""${file_base_name}" & pause""  
       }  
   ]  

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39