求解 MAC 下 C++单文件编译最优方式 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zealerzxx
V2EX    Apple

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

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

    求解 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 还有这种奇技淫巧!! 厉害
    U7Q5tLAex2FI0o0g
        10
    U7Q5tLAex2FI0o0g  
       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
    U7Q5tLAex2FI0o0g
        35
    U7Q5tLAex2FI0o0g  
       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     Solana     2730 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 11:25 PVG 19:25 LAX 04:25 JFK 07:25
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86