在Sublime Text 3编译器选项中启用-pthread

时间:2014-06-26 11:32:47

标签: c++ c pthreads sublimetext3

正如标题所示,我想知道如何将-pthread添加到Ubuntu系统上的Sublime Text 3的c / c ++编译器选项(gcc --std = gnu99 -pthread -Wall)。我在网上搜索了一个答案,无法确定任何相关的解决方案。

我还是新手,你会感激我的。谢谢。

更新:感谢您的回复。我已经实现了@ MattDMO的建议解决方案,似乎编译器已经停止了大部分的尖叫,但是,它仍然无法使用返回的以下错误消息:

gcc: fatal error: no input files  
compilation terminated.  
[Finished in 0.0s with exit code 4]  
[cmd: ['gcc', '--std=gnu99', '-pthread', '-Wall', '/myworkingdirectory/myfile.c', '-o', 'myfile']]  
[dir: /myworkingdirectory]  
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]"

我不确定为什么它抱怨没有输入文件。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

要添加编译器选项,您需要修改Sublime的标准C / C ++ build system,或者创建一个新的。最简单的方法是创建一个新方法,但我还将向您展示如何编辑现有文件。

要创建新的构建系统,请使用JSON语法在Sublime中打开一个新文件,并添加以下内容:

{
    "cmd": ["gcc", "--std=gnu99", "-pthread", "-Wall", "${file}", "-o", "${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",
    "shell": true,

    "variants":
    [
        {
            "name": "Run",
            "cmd": ["${file_path}/${file_base_name}"],
            "shell": true
        }
    ]
}

将其另存为~/.config/sublime-text-3/Packages/User/C_pthread.sublime-build。要使用它进行编译,请打开源文件,然后选择 Tools -> Build System -> C_pthread ,然后按 Ctrl B 进行构建。 Ctrl Shift B 将执行Run选项。

编辑Sublime的内置C / C ++构建系统稍微复杂一些。在Sublime Text 3中,包裹在.sublime-package zip档案中。要访问C / C ++构建文件,请先安装Package Control(如果您还没有),然后安装PackageResourceViewer插件。使用 Ctrl Shift P 打开命令选项板,键入 prv 要调出PackageResourceViewer选项,请选择Open Resource,然后向下导航至C++并选择C++.sublime-build选项。用上面的内容替换它的内容,然后保存文件。此方法的优点是您可以选择 Tools -> Build System -> Automatic ,无论何时编辑C文件,您都可以点击 Ctrl B < / kbd>构建并且不担心是否选择了正确的构建系统。

最后一点建议:编辑构建系统适用于小型一次性程序,但对于较大的项目,我强烈建议使用make。您可以在Makefile中设置所有选项,在Sublime中打开它,按 Ctrl B (假设您的Build System设置为Automatic) ,你的程序将构建。这样您就不必在.sublime-build文件中设置所有命令行选项,库包含等,然后再次为您的下一个项目更改它们。

祝你好运!

答案 1 :(得分:-1)

这实际上就是设置编译和放大链接标志到gcc / g ++。找到一些关于在他们的论坛上为sublime的构建系统添加选项的建议,这表明你最好不要这样做。

Get SublimeText 3 to comile C++11 (sic)

真的在Ubuntu上,我会学习编译&amp;使用GNU make构建,或者只是在shell中设置LDFLAGS环境变量(例如bash export LDFLAGS=-lmexport CCFLAGS=-Wall)并希望sublime text 3遵守约定。如果它不理解那么,它不遵循Ubuntu POSIX编程环境惯例,随着时间的推移,它变得越来越像一个问题。

我对所提供的问题-pthread中的命令行标志持怀疑态度,我希望该选项为-lpthread,即“为库”。可在此链接中找到显示与POSIX线程库链接的教程:Pthread tutorial including C/C++ compile & link commands

制作教程GNU Make in detail for beginners您可以设置CFLAGS&amp; LDSOAGS,如本SO答案How to use LDFLAGS in makefile

中所述