zoukankan      html  css  js  c++  java
  • 使用sublime编写c/c++ 总结

    大块头IDE Visual studio太大了,记事本也能写代码但无疑是装逼过分了。写一些轻量级的c/c++代码使用sublime来写是个很好的选择。

    三步走:

    • 编译器(win下安装了vs就使用cl,没有可以安装Mingw使用g++),

    • 配置环境变量。

    • sublime里配置 Build System

      这是一篇总结,网上有很多具体的教程,这里主要总结windows下安装的经验。
      

    先要有编译器,cl或者g++。
    如果有了编译器之后,该配置环境变量了。
    cl编译器需要的环境变量:
    1. PATH
    2. INCLUDE
    3. LIB
    MinGw的g++同样需要几个变量,不过它的名字不一样,分别叫LIBRARY_PATH,C_INCLUDEDE_PATH,PATH。键值本来就是视具体你电脑上这些文件的位置而定。
    vs环境下按照文件位置可以分为三类:
    1.vc目录 例如(C:Program Files (x86)Microsoft Visual Studio 12.0VC)下的 bin lib include 目录。
    2.mfc目录 例如(C:Program Files (x86)Microsoft Visual Studio 12.0VCatlmfc)下的 lib include目录。
    3.windows sdk目录 例如(C:Program Files (x86)Windows Kits8.1)下。
    这些可以打开vs查看VC++目录。例如包含目录为$(VC_IncludePath);$(WindowsSDK_IncludePath);

    有了环境变量就可以直接到命令行里测试,执行 "cl /EHsc a.c"或者"g++ a.c -o a"之类的命令,而不需要写上详细的绝对路径。
    现在该打开Sublime Text3,选择tools,然后选择Build System,然后选择 New Build System。最后记得保存为后缀是.sublime-build。

    解释下 Build System 的写法:
    1. 参考sublime默认配置的C++ singe file的写法。"ctrl+shift+B"会列出所有build的选项,默认有两个C++ single file,可以到sublime
      的安装目录下的packages文件夹里找到C++.sublime-package,这就是个压缩文件,改后缀".zip"解压缩后就有了C++.sublime-build。
      也可以通过Ctrl+Shift+P再install package的方式安装 PackageResourceViewer,通过在Command palette里输入
      PackageResourceViewer:opensource来打开对应的文件来修改。

    2. sublime-build是个JSON文件,这些条目可增删改换顺序。如下的写法,一个"shell_cmd"条目加上两个变种(variants),那么完了后
      ctrl+shift+B会发现多出3个build命令选项。

    3. 每个build命令其实很简单,先想想在命令行下的命令怎么写,cl --help看看有什么选项。这些选项可以按需来写,比如/MDd,
      /Zi,/Fo(相当于g++的 -o,cl里通常不需要)等。在通过&&(短路)、&(长路)将多条命令连接。
      其中${file}或者 "$file" 》整个文件名。 ${file_path}/${file_base_name}》文件路径/文件名(不带后缀)
      因为在sublime里运行没办法接收输入,所以再编辑个"Run in CMD"的variant。

    推荐下我用的命令: "shell_cmd": "start cmd /k "cl /EHsc /Od ${file}&&cls&&${file_path}/${file_base_name}""
    解决输入问题,编译语法报错问题,遗憾的是我的没办法到控制台输出中文,改utf-8也没用

    贴上我的
                      {
                  "env":{   // 也可以在这里配置环境变量
                  "INCLUDE":"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include;C:\Program Files (x86)\Windows Kits\8.1\Include\shared;C:\Program Files (x86)\Windows Kits\8.1\Include\um;C:\Program Files (x86)\Windows Kits\8.1\Include\winrt;D:\myPath\boost_1_61_0;%INCLUDE%",
                  "LIB":"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\lib;C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86;D:\myPath\boost_1_61_0\stage\lib;%LIB%",
                  "PATH":"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin;C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools;D:\myPath\lua;%Path%"
                  
                  },
                  
                  "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
                  "working_dir": "${file_path}",
                  "selector": "source.c, source.c++",
                  "encoding": "utf-8",
                  
                  "shell_cmd": "cl /EHsc /Od "$file"&& ${file_path}/${file_base_name}", // 编译运行
                  //"shell_cmd": "g++ "${file}" -o "${file_path}/${file_base_name}"", //C++ single fileS
                  "variants":
                  [
                   {
                  "name": "Run in CMD",
                  //"shell_cmd": "cl /EHsc /Od "$file" && start cmd /c ""${file_path}/${file_base_name}" & pause""// For CL On Windows Only
                   "shell_cmd": "start cmd /k "cl /EHsc /Od ${file}&&cls&&${file_path}/${file_base_name}""//
                   //最佳方案  在 cmd上先编译,能够显示cl的编译错误  且能输入cin scanf,
                   //cmd 参数见 cmd /?   “&&”短路规则  "&"是长路
    
                  //"shell_cmd": "g++ "${file}" -o "${file_path}/${file_base_name}" && "${file_path}/${file_base_name}""// C++ singlefile Run
                  },
                 {
                  "name": "Compile dll",
                  "shell_cmd": "cl /EHsc /Od /c  "$file"&&link /dll ${file/.cpp/.obj/}"// 编译 并连接成 dll
                  },
                   {
                  "name": "clean",
                  "shell_cmd": "del ${file/.cpp/.exe/} ${file/.cpp/.obj/}"// 清空 exe obj
                   }
                  ]
                  }
    
  • 相关阅读:
    递归
    数据结构与算法-复杂度分析
    'latin-1' codec can't encode characters in position解决字符问题
    redis理解
    spring 嵌套事务问题
    Parameterized testing with any Python test framework
    分布式事务测试考虑点
    python orm / 表与model相互转换
    Python多线程、多进程
    JS运动
  • 原文地址:https://www.cnblogs.com/ShawSpring/p/5612242.html
Copyright © 2011-2022 走看看