V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zealerzxx
V2EX  ›  Apple

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

  •  
  •   zealerzxx · Jul 10, 2017 · 6421 views
    This topic created in 3213 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    ```
    make test
    ./test
    ```

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

    LZ 可能读了个假的计算机科学……
    hackpro
        24
    hackpro  
       Jul 11, 2017
    alias cpp='clang++ -std=c++11 -stdlib=libc++ -Weverything'
    cpp xxx.cpp
    MCVector
        25
    MCVector  
       Jul 11, 2017 via Android
    make {source without extension}
    tangbao
        26
    tangbao  
       Jul 11, 2017 via iPhone
    推荐一个不用新建工程的小型 IDE,geany.org
    porrat
        27
    porrat  
       Jul 11, 2017 via iPhone
    GenericMakefile
    messyidea
        28
    messyidea  
       Jul 11, 2017 via Android
    geany 应该是正解
    vingz
        29
    vingz  
       Jul 11, 2017 via Android
    涨姿势了,正需要,vs 原来可以打开 terminal
    fyibmsd
        30
    fyibmsd  
       Jul 11, 2017
    #/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  
       Jul 11, 2017 via iPhone
    一个工程,然后 git branch
    elgoogelgoog
        32
    elgoogelgoog  
       Jul 11, 2017
    @Tunar 哈哈,+1
    然而直接 sumlime 来写更方便
    missdeer
        33
    missdeer  
       Jul 11, 2017
    都说是 mac 了,上面怎么还在 gcc !
    正确姿势不应该是`clang -o test main.cpp`么!
    UnknownR
        34
    UnknownR  
       Jul 11, 2017
    gcc 或者 g++吧,你用 homebrew 安装个就行,直接在 sublime text 或者 vs code 里写好,然后调成 terminal,再编译就行,单个文件而已,足够了,没必要去装个超大的 ide
    U7Q5tLAex2FI0o0g
        35
    U7Q5tLAex2FI0o0g  
       Jul 11, 2017
    @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  
       Jul 11, 2017
    gcc
    missdeer
        37
    missdeer  
       Jul 11, 2017
    @littleylv 能 gcc 啊,但 mac 上的 gcc 是个很多年前的老版本,用 clang 才是好的 practice
    haogefeifei
        38
    haogefeifei  
       Jul 11, 2017
    用 cc 命令编译就是了。。。。
    porrat
        39
    porrat  
       Jul 11, 2017
    @missdeer mac 上的 gcc 是 clang 的别名
    ChristopherWu
        40
    ChristopherWu  
       Jul 11, 2017
    @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  
       Jul 11, 2017
    直接 gcc
    aristotll
        42
    aristotll  
       Jul 11, 2017
    楼上说的对

    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  
       Jul 12, 2017
    Visual Studio Code
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5684 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 162ms · UTC 07:53 · PVG 15:53 · LAX 00:53 · JFK 03:53
    ♥ Do have faith in what you're doing.