置いた
set(CMAKE_CXX_COMPILER "/usr/bin/clang.exe")
実行/クリーン、実行/ビルド。
次のようなリンクエラーが発生します。
undefined reference to `std::ios_base::Init::~Init()'
: undefined reference to `__gxx_personality_v0'
おそらく、変更する他の変数があります。 -lstdc++
をCMAKE_CXX_FLAGS
に追加しようとしましたが、違いはありません。
たとえば、CMakeの方法とは対照的にCLionの方法はありますか?
ありがとう。
CMakeでコンパイラを指定するのは少し微妙です。使用している方法で、CMakeLists.txtでCMAKE_CXX_COMPILERを設定することは機能しますが、 CMake FAQ で最も推奨されない方法です。
CLionは CMake FAQ のメソッド2をサポートします:cmake呼び出し内で-D
を使用します。 CMakeLists.txtで変数を設定しても効果はありません。
Macの場合、Preferences
に移動します
Linux/Windowsでは、File | Settings
に移動します
次にBuild, Execution, Deployment | CMake | CMake options
を入力し、テキストを入力します。
-D CMAKE_C_COMPILER=/path/to/c_compiler
-D CMAKE_CXX_COMPILER=/path/to/c++_compiler
詳細については、 CLion FAQ を参照してください。
コンパイラを変更するときは、CLion cmakeキャッシュを無効にして再起動する必要があることにも注意してください。 ClionでCMakeキャッシュをクリアする方法 に関する私の回答を参照してください。
編集
この回答を書いた後、コメントで@rubenvbが指摘しているように、CLionは複数のビルドディレクトリのサポートを追加しました。これは調査するもう1つの方法です。
実際、Windows10環境で実行されているClions2018.2の最新バージョンは、LLVMclangバージョン6/6.0.1または7.0とGCCmingw x64win32固有のバリアントで動作します。
リンカーのデフォルトは、VisualStudioではなくGCCに設定されています
以下と同じセットアップでcygwinでも動作するはずですが、多くの一般的なc ++ IDEでも動作するようにテストされています。
clions2018.2で動作するようにテストされたx64または32固有のGCCmingwバージョン
\ mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0またはmingw-w64\i686-8.1.0-win32-dwarf-rt_v6-rev0
CMakeビルドのセットアップは以下のとおりです
cmake_minimum_required(VERSION 3.10)
project(project_name )
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_C_COMPILER "c:/llvm/bin/clang.exe")
set(CMAKE_CXX_COMPILER "c:/llvm/bin/clang++.exe")
// target i686-pc-windows-gnu for 32bit
set(CL_COVERAGE_COMPILE_FLAGS "-v -target x86_64-pc-windows-gnu -Wall -Wextra -std=gnu++17")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CL_COVERAGE_COMPILE_FLAGS}" )
add_executable(project_name yourcpp.cpp)