簡體   English   中英

MacOs:如何更改 C++ 編譯器和 stdlib

[英]MacOs: How to change the C++ compiler and stdlib

我有一個帶有 CMake(和 conan)的 C++ 項目,我想將編譯器切換到 GCC-10 及其相應的 stdlibc++。 我如何在 MacOS (Big Sur) 上執行此操作。

在 cmake configure 命令中指定 -DCMAKE_CXX_COMPILER= which g++-10成功地切換到我的系統上的 g++ 10 編譯器(與 brew 一起安裝)。 但是,我沒有看到任何指示包含和 stdlib 已更改。

我的 buidld 命令看起來像:

/usr/local/bin/g++-10 -DCONCORE_USE_GLM=1 -DCONCORE_USE_OPENMP=1 -DCONCORE_USE_TBB=1 -DRC_USE_RTTI -I../test/. -I../test/../include -I../include -isystem /usr/local/Cellar/tbb/2020_U3/include -isystem /Users/lucteo/.conan/data/Catch2/2.11.0/catchorg/stable/package/5ab84d6acfe1f23c4fae0ab88f26e3a396351ac9/include -isystem /Users/lucteo/.conan/data/rapidcheck/20200131/_/_/package/d2dbafdccc1ddd834eb76a31bdfdc6cc51e23ec1/include -fsanitize=address -fsanitize=undefined  -D_GLIBCXX_USE_CXX11_ABI=1 -O3 -DNDEBUG -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -Wall -std=gnu++17 -MD -MT test/CMakeFiles/test.concore.dir/func/test_serializers.cpp.o -MF test/CMakeFiles/test.concore.dir/func/test_serializers.cpp.o.d -o test/CMakeFiles/test.concore.dir/func/test_serializers.cpp.o -c ../test/func/test_serializers.cpp

切換編譯器和 stdlib 的最佳方法是什么?

要更改 stdlib,您需要向編譯器提供-stdlib=stdlibc++標志以激活 stdlibc++。 這可以通過 ccmake(打開高級模式(使用 t),並將CMAKE_CXX_FLAGS設置為-stdlib=stdlibc++ )或通過 CMakeLists.txt 中的等效指令來完成:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=stdlibc++")

您可能還需要set(CMAKE_EXE_LINKER_FLAGS "-stdlib=stdlibc++")

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=stdlibc++")

要更新您的柯南配置文件(例如default ),請使用以下命令:

conan profile update settings.compiler.libcxx=stdlibc++ default

注意: -stdlib是一個 Clang 標志,不適用於任何已發布的 GCC 版本。 GCC 總是使用libstdc++除非您通過-nostdlib選項告訴它根本不使用標准庫(在這種情況下,您要么需要避免使用任何標准庫功能,要么使用-I-L-l標志將其指向一組替代的頭文件和庫文件)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM