2016-10-15 15 views
1

gccclangのどちらかを選択し、libstdc++libc++の間で選択したいと考えています。 This siteは、コンパイラと標準ライブラリを混在させる方法を説明しています。コンパイラの中からCC=gcc CCX=g++ cmake...CC=clang...のようにcmakeを呼び出すことができます。Cmake:C++ヘッダーの選択方法

問題はlibstdc++で、-I/usr/include/c++/5というフラグとの-I/usr/include/c++/v1を使用する必要があります。

移植性の理由から、上記のパスはCMakeListst.txtにも、コマンドライン引数としても含めないでください。これを行う方法はありますか?cmakeはそれを自動検出しますか?

+0

はあなたがcmakeのを実行したとき、あなたはコンパイラ(gccを/打ち鳴らす)とC++標準ライブラリ(のlibstdC++/libcのを++)を選択します意味するかです。だから、 'if(clang)... else if(gcc)'のようなcamkeスクリプトが必要ですか? – hyun

+0

@ CodeDreamer、私は質問を編集しました。 – robert

答えて

1

boostまたはopensslには、とOPENSSL_ROOT_DIRなどの特定の環境変数も表示されます。そのようなヒント変数も必要です。 cpprestsdk cmake script同様

は、私が思うあなたの CMakeLists.txt

if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") 
    message("-- Setting clang option") 
    include_directories(${Your_path}) 
    ... 

elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU") 
    message("-- Setting gcc options") 
    include_directories(${Your_path}) 

    ... 

else() 
    message("-- Unknown compiler, success is doubtful.") 
    message("CMAKE_CXX_COMPILER_ID=${CMAKE_CXX_COMPILER_ID}") 
endif() 
+0

ありがとうございます。パスが自動的に検出され、いくつかのCMake変数に埋め込まれることを期待しました。 – robert

関連する問題