24

ここclangの指示に従って最初からインストールしました。その後、ここの指示に従って使用してインストールしました。libc++libsupc++

と を使用してプログラムをコンパイルおよびリンクするときはいつでもclanglibc++次のようなコマンドを発行する必要があります。

clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib <...>

libc++毎回コマンドラインでライブラリやパスを指定しなくても、デフォルトで使用される方法で clang を構成/コンパイルする方法はありますか? それを入れることLD_LIBRARY_PATHも好ましいオプションではなく、カスタムラッパースクリプトを使用することもありません。

4

2 に答える 2

13

Clang の CMake ビルド システムはCLANG_DEFAULT_CXX_STDLIB、デフォルトの C++ 標準ライブラリを設定することを学習しました。

ただし、次のclang / llvmリリースまでツリービルドのトップを使用する必要があるため、このソリューションがどれほど実用的かはわかりません。

于 2016-02-18T02:02:44.703 に答える
1

There are three ways I can think to do it. The first is for a single project using Unix makefiles, the second will serve as many projects as you want, but requires editing an arbitrary number of files to serve an arbitrary number of users, and the third will work for any number of projects or users. You probably want to skip to the third option, but the rest are there for anyone else with somewhat similar needs.

  1. これを行う良い方法は、makefile を使用することです。これにより、単に入力するだけでプロジェクトをビルドできますmake。*nix を使用している場合、インストールは必要ありません。ほとんどのシステムに付属しています。これは、あなたが要求していることを実行するサンプル makefile です (<progname>プログラム名と<filename>ソース ファイル名に置き換えてください)。これを、ソース ファイルと同じディレクトリにある「makefile」という名前のファイルに貼り付けるだけです。

    FLAGS=-stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib
    
    all: <progname>
    
    progname: 
        clang++ $FLAGS progname
    

    免責事項: 私は clang++ を使用していないため、これは不完全な呼び出しである可能性があります。-o outfile_namegcc では、たとえばも指定する必要があります。

  2. 別の方法として (コメントを読んだだけなので)、次のコマンドを実行することもできます (bash を使用していると仮定します)。

    echo 'alias stdclang="clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib"' >> ~/.bashrc
    

    それ以降は、入力するだけでリンクされたlibc ++ライブラリを使用してビルドできますstdclang <progname>

  3. One last thing I could think of is similar to the last one, but with a more permanent twist. As root, run the following: touch /usr/bin/stdclang && chmod a+x /usr/bin/stdclang then edit the file /usr/bin/stdclang with whatever editor you want and add these lines:

    #!/bin/bash
    clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib $@
    

    Then you can run stdclang <other_args> to have it automatically expand to clang++ -stdlib=libc++ -Wl,-rpath,/path/to/libcxx/lib <other_args>

于 2016-02-09T00:46:38.310 に答える