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

标签 c++ c pthreads sublimetext3

正如标题所示,我想知道如何在 Ubuntu 系统上将 -pthread 添加到 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]"

我不知道为什么它提示没有输入文件。有什么想法吗?

最佳答案

要添加编译器选项,您需要修改 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 ,然后按 CtrlB 进行构建。 CtrlShiftB 将执行 Run选项。

编辑 Sublime 的内置 C/C++ 构建系统稍微复杂一些。在 Sublime Text 3 中,包被包裹在 .sublime-package 中。 zip 文件。要访问 C/C++ 构建文件,请首先安装 Package Control (如果尚未安装),然后安装 PackageResourceViewer 插入。使用 CtrlShiftP 打开命令面板,输入 prv 调出<b><i>P</i></b>ackage<b><i>R</i></b>esource<b><i>V</i></b>iewer选项,选择Open Resource ,然后向下导航至 C++并选择C++.sublime-build选项。将其内容替换为上述内容,然后保存文件。这种方法的优点是可以选择 Tools -> Build System -> Automatic ,每当您编辑 C 文件时,您都可以按 CtrlB 进行构建,而不必担心是否选择了正确的构建系统。

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

祝你好运!

关于c++ - 在 Sublime Text 3 编译器选项中启用 -pthread,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24429415/

相关文章:

c++ - 打印所有线程的堆栈跟踪而不附加 GDB

c++ - 两个构造函数,哪个是默认的?

无法写入 dsPIC30F OSCCON

python - 安装http-request-randomizer会导致安装错误

multithreading - pthread_cond_wait 在等待时自动并原子地解锁互斥体

c++ - visual studio - 在 Release模式下无效的 std::string 调试器输出

c++ - 我似乎对 C++ 中的 `static` 有一些误解

c - MinGW,始终与 pthreads 链接

c++ - 在没有信道数据包丢失的传输中未收到数据包的原因?

c、linux - 在内核中使用 pthread.h