2017-11-21 6 views
-1

私のCPPプロジェクトでg ++コンパイラを使いたいです。だから私セットアップcmakeのは、このようなファイル:CMakeにg ++コンパイラを設定できません

set(CMAKE_CXX_COMPILER "/usr/local/bin/g++") 
 

 
project(GatewayTest LANGUAGES C CXX) 
 
...

しかし、エラーがまだクランで示されたとき。私はMacOS Sierraで走った。 エラー:

clang:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを見るために-vを使います)。 この設定に問題がありますか?

+0

ファイルの残りの部分が残っていないとは言い難い....あなたはclangでコンパイルしてg ++とリンクしたいですか???またはg ++でコンパイルしたいですか? – xyious

+0

g ++でコンパイルするだけです。しかし、私はコンソールがclangエラーを表示する理由を知らない – hoang

+1

コードとエラーメッセージの両方に何か提案するための情報がほとんど含まれていません。 [mcve]を入力してください。 – Tsyvarev

答えて

-2

set(CMAKE_C_COMPILER "clang") 
 
set(CMAKE_CXX_COMPILER "clang++") 
 
project(GatewayTest LANGUAGES C CXX) 
 
...

2

CMakeLists.txt内側からコンパイラーを設定しようとしないでください。

このフラグの背後にあるアイデアは、ユーザににどのコンパイラを使用するかを指定できるようにすることです。これは、ユーザーがどのマシンをビルドするかを知るので、コンパイラーを見つける場所を知る必要があるため、意味があります。 ではないこの情報をビルドスクリプトの一部にすることは意味があります。ビルドスクリプトは、原則として、どのマシンやコンパイラにも移植可能であると考えられています。

すると、プロジェクトが正しく構築されるように、特定のコンパイラが必要な場合は、CMAKE_CXX_COMPILERのような変数を検査することができ、彼らはあなたが期待するものは含まれませんが、あなたはそれらの変数に書き込むべきではありません場合は、診断を上げます。

コンパイラ検出を記述するには、コンパイラ検出に使用する変数を設定するシェルスクリプトでCMakeに呼び出しをラップするか、CMakeを構成するためにtoolchain fileを使用します。

+0

良い答え。あなたのガイドに沿ってチェックしましょう – hoang

関連する問題