【问题标题】:Sublime Build system for c++ in linux allowing input from fileSublime Build system for c++ in linux允许从文件输入
【发布时间】:2014-11-18 10:57:43
【问题描述】:

我在 linux 中使用 sublime 我正在尝试直接从 sublime 编译和运行我的 c++ 程序,输入来自文件而不是 STDIN。
请帮助我编写在 sublime 构建文件中编写的代码。
我得到了这段代码,但它不起作用我认为它适用于 Windows,而不适用于 linux:

{
    "cmd" : ["g++", "$file_name", "-o", "${file_base_name}.exe"],
    "selector" : "source.c",
    "shell":true,
    "working_dir" : "$file_path",
    "variants": [
        {   
            "cmd": ["${file_base_name}" , "<" , "input.txt"],
            "shell": true,
            "name": "Run",
            "working_dir" : "$file_path"
        }
    ]
}

【问题讨论】:

    标签: c++ linux sublimetext2 sublimetext


    【解决方案1】:

    我将添加一个配置,用于从文件加载输入并在 Sublime 控制台中显示输出(“Run in”)或将输出发送到其他文件(“Run in out”)。也许有人会发现它很有用。 (适用于 Windows 和 Ubuntu)

    {
    "shell_cmd": "g++ \"${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 in",
            "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\" <$file_base_name.in"
        },
        {
            "name": "Run in out",
            "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\" <$file_base_name.in >$file_base_name.txt"
        }
    ]
    }
    

    【讨论】:

      【解决方案2】:

      这是需要在 sublime 的构建系统中编写的最终代码,以编译和运行从文件中获取输入。

      {
          "cmd": ["g++ -Wall ${file} -o ${file_base_name}"], 
          "working_dir": "${file_path}",
          "selector": "source.c++",
          "shell": true,
          "working_dir" : "$file_path",
      
          "variants": [
                      {   
                          "cmd": [ "${file_path}/${file_base_name}<input.txt"],
                          "shell": true,
                          "name": "Run",
                          "working_dir" : "$file_path"
                      }
                  ]
      }
      

      非常感谢 MattDMo。

      【讨论】:

        【解决方案3】:

        我怀疑它不起作用的原因是因为g++ 正在创建一个.exe 文件,而构建系统只寻找source.c 范围,而您的代码可能是source.c++。将前两行更改为以下内容:

        "cmd" : ["g++", "$file", "-o", "${file_path}/${file_base_name}"],
        "selector" : "source.c, source.c++",
        

        你应该准备好了。

        【讨论】:

        • 我在控制台中得到了这个:g++:致命错误:没有输入文件编译终止。 [在 0.0s 内完成,退出代码为 4] [cmd: ['g++', 'main2.cpp', '-o', 'main2']] [dir: /home/shikhar/CP/work] [path: / usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]
        • @sv_jan5 如果您从终端运行相同的命令会发生什么?切换到~/CP/work 并运行g++ main2.cpp -o main2
        • 终端中的这个命令给出了名为'main2'的可执行文件。编译器没有问题。
        • @sv_jan5 见我上面的编辑。我怀疑g++ 出于某种原因在错误的目录中查找文件。
        猜你喜欢
        • 1970-01-01
        • 2014-04-30
        • 1970-01-01
        • 2016-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        相关资源
        最近更新 更多