Il modo "corretto" per farlo in CMake al momento, fino a quando non viene aggiunta una funzione di base specifica per cambiare le librerie standard, ovvero utilizzare un file di toolchain.
In quel file toolchain specifichi il compilatore ecc. in modo simile alle altre risposte qui.
MA la cosa fantastica delle toolchain è che possono essere sostituite rapidamente sia sulla riga di comando (usando -DCMAKE_TOOLCHAIN_FILE=path/to/file) OPPURE in VSCode con l'estensione CMakeTools installata, e probabilmente anche con altri editor.
Ma dover codificare a mano i propri file di toolchain è un altro compito oscuro! Niente divertimento!
Fortunatamente, mi sono imbattuto in questo github che ne mantiene una suite in modo da non doverli scrivere da zero! Dovrebbe essere molto meno probabile che si sbagli.
https://github.com/ruslo/polly
Non dimenticare di impostare il compilatore su clang++:
set(CMAKE_CXX_COMPILER "clang++")
Inoltre, elimina i file generati da cmake (elimina la cartella CMakeFiles
e CMakeCache.txt
).
A seconda del tuo sistema, potrebbe anche essere utile impostare
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")