"Správným" způsobem, jak toho v CMake v tuto chvíli provést, dokud nebude přidána konkrétní základní funkce pro přepínání standardních knihoven, je použít soubor toolchain.
V tomto souboru toolchain zadáte kompilátor atd. podobně jako v ostatních odpovědích zde.
ALE co je skvělé na toolchainech je, že je lze rychle vyměnit buď na příkazovém řádku (pomocí -DCMAKE_TOOLCHAIN_FILE=cesta/k/souboru) NEBO ve VSCode s nainstalovaným rozšířením CMakeTools a pravděpodobně i jinými editory.
Ale muset ručně kódovat své vlastní soubory toolchain je další obskurní fuška! Žádná legrace!
Naštěstí jsem narazil na tento github, který jich udržuje sadu, takže je nemusíte psát od začátku! Mělo by být mnohem méně pravděpodobné, že se spletou.
https://github.com/ruslo/polly
Nezapomeňte nastavit kompilátor na clang++:
set(CMAKE_CXX_COMPILER "clang++")
Vyčistěte také soubory vygenerované cmake (smažte složku CMakeFiles
a CMakeCache.txt
).
V závislosti na vašem systému může také pomoci nastavení
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")