Je mets
set(CMAKE_CXX_COMPILER "/usr/bin/clang.exe")
Exécuter/Nettoyer, Exécuter/Construire.
Je reçois des erreurs de lien comme:
undefined reference to `std::ios_base::Init::~Init()'
: undefined reference to `__gxx_personality_v0'
Vraisemblablement, il y a d'autres variables à changer. J'ai essayé d'ajouter -lstdc++
à CMAKE_CXX_FLAGS
, mais sans aucune différence.
Existe-t-il une méthode CLion par opposition à une méthode CMake, par exemple?
Merci.
Spécifier un compilateur avec CMake est un peu délicat. Bien que la méthode que vous utilisez, définir CMAKE_CXX_COMPILER dans CMakeLists.txt fonctionne, c’est la méthode la moins recommandée dans le CMake FAQ .
CLion prend en charge la méthode 2 de CMake FAQ : en utilisant -D
dans l'invocation de cmake. La définition des variables dans CMakeLists.txt n'a aucun effet.
Sur Mac, allez à Preferences
Sous Linux/Windows, accédez à File | Settings
puis Build, Execution, Deployment | CMake | CMake options
et entrez le texte:
-D CMAKE_C_COMPILER=/path/to/c_compiler
-D CMAKE_CXX_COMPILER=/path/to/c++_compiler
Voir le CLion FAQ pour plus de détails.
Notez également que lorsque vous modifiez les compilateurs, vous devrez invalider le cache CLion cmake et redémarrer, voir ma réponse sur Comment effacer le cache CMake dans Clion? .
MODIFIER
Après avoir écrit cette réponse, CLion a ajouté la prise en charge de plusieurs répertoires de construction, comme l'a souligné @rubenvb dans les commentaires. C'est un autre chemin à explorer.
En fait, la dernière version de Clions 2018.2 sous Windows 10 fonctionne avec LLVM clang version 6/6.0.1 ou même 7.0 avec la variante spécifique à GCC mingw x64 win32.
l'éditeur de liens par défaut est défini sur GCC, pas Visual Studio.
Je suppose que cela devrait également fonctionner sur cygwin avec la même configuration que celle qui suit a également été testée pour fonctionner sur un certain nombre de c ++ IDE populaires également.
la version de GCC mingw x64 ou 32 spécifique a été testée pour fonctionner sur Clions 2018.2
\ mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0 ou mingw-w64\i686-8.1.0-win32-dwarf-rt_v6-rev0
CMake construction comme ci-dessous
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)