V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zealerzxx
V2EX  ›  Apple

求解 MAC 下 C++单文件编译最优方式

  •  
  •   zealerzxx · 2017-07-10 21:18:33 +08:00 · 5558 次点击
    这是一个创建于 2691 天前的主题,其中的信息可能已经有所发展或是发生改变。

    求解 MAC 下 C++单文件编译最优方式

    以前是用 WINDOWS 的,里面的 dev 和 codeblocks 写一些单个文件的 C / C++算法很舒服 后来换了 MBP,一直都用着新建工程。现在突然想刷刷 OJ,每个题目都建一个工程感觉很麻烦 请问:有没有丝滑柔顺的解决方法。

    目前尝试的方法有:xcode ,clion ,sublime 3 最接近但是不能输入。还有不会 VIM,搞不来 VIM

    43 条回复    2017-07-12 20:04:48 +08:00
    xvimer
        1
    xvimer  
       2017-07-10 21:30:18 +08:00
    CodeRunner
    takeoffyoung
        2
    takeoffyoung  
       2017-07-10 21:34:05 +08:00
    MS Visual Code, control+` 呼出 terminal
    ben2ex
        3
    ben2ex  
       2017-07-10 21:42:33 +08:00
    Visual Studio Code,配置 task.json,见 https://go.microsoft.com/fwlink/?LinkId=733558
    zealerzxx
        4
    zealerzxx  
    OP
       2017-07-10 21:55:26 +08:00
    @xvimer 贵!
    zealerzxx
        5
    zealerzxx  
    OP
       2017-07-10 21:55:48 +08:00
    @takeoffyoung 然后手动编译链接吗
    hxsf
        6
    hxsf  
       2017-07-10 21:57:54 +08:00
    @zealerzxx #5 单文件你链接啥?

    直接
    g++ a.cpp -o a 回车 // 根据需要自己加点别的编译参数
    ./a 回车

    c 就用 gcc
    tyfulcrum
        7
    tyfulcrum  
       2017-07-10 21:59:57 +08:00 via iPhone
    cc filename
    或者
    c++ filename
    ./a.out
    zealerzxx
        8
    zealerzxx  
    OP
       2017-07-10 22:05:33 +08:00
    @hxsf 嗯 可以,最好有一键保存 编译 运行的
    zealerzxx
        9
    zealerzxx  
    OP
       2017-07-10 22:05:55 +08:00
    @tyfulcrum 还有这种奇技淫巧!! 厉害
    littleylv
        10
    littleylv  
       2017-07-10 22:06:54 +08:00
    gcc test.c -o test
    ./test
    Tunar
        11
    Tunar  
       2017-07-10 22:12:51 +08:00 via Android
    楼上才是正解😒身边一堆安个 xcode 只为 c 语言刷 oj,,
    zealerzxx
        12
    zealerzxx  
    OP
       2017-07-10 22:14:32 +08:00
    @ben2ex 大致看了一下,有没有现成的方案 心态崩了
    skadi
        13
    skadi  
       2017-07-10 22:15:35 +08:00 via Android
    vscode
    zealerzxx
        14
    zealerzxx  
    OP
       2017-07-10 22:15:54 +08:00
    @Tunar 整个 OS X 平台,没有 CB Dev 替代产品?
    earther01
        15
    earther01  
       2017-07-10 22:19:34 +08:00 via iPhone
    sublime 可以整合编译器的,不过我一般都是直接 g++
    UnisandK
        16
    UnisandK  
       2017-07-10 22:23:31 +08:00
    CodeRunner,谁用谁知道
    荔枝卖 79,比官网还便宜不少了
    deepjia
        17
    deepjia  
       2017-07-10 22:28:30 +08:00
    直接 c++/g++ filename 还不够简单么?
    不知道为什么你会觉得是奇技淫巧,不指定输出的文件名,自然就用默认文件名 a.out 了啊……
    zealerzxx
        18
    zealerzxx  
    OP
       2017-07-10 22:41:23 +08:00 via iPhone
    CodeRunner 试用中 ,感觉要上天
    takeoffyoung
        19
    takeoffyoung  
       2017-07-10 22:42:55 +08:00
    @zealerzxx 你如果愿意,还可以自己撸个插件,填好输入输出,一键运行还能比对样例是否通过。
    kAzec
        20
    kAzec  
       2017-07-10 23:23:23 +08:00
    用 make 命令也行。比如 test.cpp:

    ```
    make test
    ./test
    ```

    不需要写 Makefile,配合 st3 或 atom 的 build system 可以做到 CMD+R 一键编译运行。
    clavichord93
        21
    clavichord93  
       2017-07-11 00:46:29 +08:00
    @zealerzxx 6 楼和 7 楼说的是一回事啊,这算什么奇技淫巧。。。而且你作为一个计算机从业者(计算机专业在读生),开个终端输条命令麻烦吗?
    kingcos
        22
    kingcos  
       2017-07-11 01:30:23 +08:00
    要是楼上的都觉得麻烦,CB 有 Mac 版吧。。
    yangff
        23
    yangff  
       2017-07-11 02:07:13 +08:00
    谁告诉你 sublime 不能输入的了……

    LZ 可能读了个假的计算机科学……
    hackpro
        24
    hackpro  
       2017-07-11 03:14:21 +08:00
    alias cpp='clang++ -std=c++11 -stdlib=libc++ -Weverything'
    cpp xxx.cpp
    MCVector
        25
    MCVector  
       2017-07-11 05:50:58 +08:00 via Android
    make {source without extension}
    tangbao
        26
    tangbao  
       2017-07-11 06:08:22 +08:00 via iPhone
    推荐一个不用新建工程的小型 IDE,geany.org
    porrat
        27
    porrat  
       2017-07-11 06:33:46 +08:00 via iPhone
    GenericMakefile
    messyidea
        28
    messyidea  
       2017-07-11 07:56:05 +08:00 via Android
    geany 应该是正解
    vingz
        29
    vingz  
       2017-07-11 08:01:15 +08:00 via Android
    涨姿势了,正需要,vs 原来可以打开 terminal
    fyibmsd
        30
    fyibmsd  
       2017-07-11 08:11:03 +08:00
    #/bin/bash
    FILE=$1
    CC="cc"
    DIR=/tmp/exec

    if [ ! -d $DIR ]; then
    mkdir $DIR
    fi

    FILENAME=${FILE%%.*}
    $CC $1 -o $DIR/$FILENAME
    $DIR/$FILENAME
    QAPTEAWH
        31
    QAPTEAWH  
       2017-07-11 08:14:22 +08:00 via iPhone
    一个工程,然后 git branch
    elgoogelgoog
        32
    elgoogelgoog  
       2017-07-11 09:23:03 +08:00
    @Tunar 哈哈,+1
    然而直接 sumlime 来写更方便
    missdeer
        33
    missdeer  
       2017-07-11 09:44:03 +08:00
    都说是 mac 了,上面怎么还在 gcc !
    正确姿势不应该是`clang -o test main.cpp`么!
    UnknownR
        34
    UnknownR  
       2017-07-11 09:48:50 +08:00
    gcc 或者 g++吧,你用 homebrew 安装个就行,直接在 sublime text 或者 vs code 里写好,然后调成 terminal,再编译就行,单个文件而已,足够了,没必要去装个超大的 ide
    littleylv
        35
    littleylv  
       2017-07-11 09:48:55 +08:00
    @missdeer #33
    mac 就不能 gcc ?

    $ which gcc
    /usr/bin/gcc
    $ which clang
    /usr/bin/clang
    $ ls -la /usr/bin/gcc
    -rwxr-xr-x 1 root wheel 18288 6 28 11:38 /usr/bin/gcc
    $ ls -la /usr/bin/clang
    -rwxr-xr-x 1 root wheel 18288 6 28 11:38 /usr/bin/clang
    eqing
        36
    eqing  
       2017-07-11 09:50:43 +08:00
    gcc
    missdeer
        37
    missdeer  
       2017-07-11 10:14:31 +08:00
    @littleylv 能 gcc 啊,但 mac 上的 gcc 是个很多年前的老版本,用 clang 才是好的 practice
    haogefeifei
        38
    haogefeifei  
       2017-07-11 10:43:28 +08:00
    用 cc 命令编译就是了。。。。
    porrat
        39
    porrat  
       2017-07-11 11:34:12 +08:00
    @missdeer mac 上的 gcc 是 clang 的别名
    ChristopherWu
        40
    ChristopherWu  
       2017-07-11 15:49:47 +08:00
    @missdeer brew 的 gcc 是最新的
    $ gcc-7 -v
    Using built-in specs.
    COLLECT_GCC=gcc-7
    COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/7.1.0/libexec/gcc/x86_64-apple-darwin16.5.0/7.1.0/lto-wrapper
    Target: x86_64-apple-darwin16.5.0
    Configured with: ../configure --build=x86_64-apple-darwin16.5.0 --prefix=/usr/local/Cellar/gcc/7.1.0 --libdir=/usr/local/Cellar/gcc/7.1.0/lib/gcc/7 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-7 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-checking=release --with-pkgversion='Homebrew GCC 7.1.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-nls
    Thread model: posix
    gcc version 7.1.0 (Homebrew GCC 7.1.0)
    init
        41
    init  
       2017-07-11 16:11:07 +08:00
    直接 gcc
    aristotll
        42
    aristotll  
       2017-07-11 16:30:30 +08:00
    楼上说的对

    gcc --version
    Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
    Apple LLVM version 8.0.0 (clang-800.0.42.1)
    Target: x86_64-apple-darwin16.6.0
    Thread model: posix
    InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
    everettjf
        43
    everettjf  
       2017-07-12 20:04:48 +08:00
    Visual Studio Code
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:13 · PVG 06:13 · LAX 14:13 · JFK 17:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.