【发布时间】:2021-01-13 09:39:07
【问题描述】:
我有一个带有 CMake(和柯南)的 C++ 项目,我想将编译器切换到 GCC-10 及其对应的 stdlibc++。如何在 MacOS (Big Sur) 上执行此操作。
在 cmake 配置命令中指定 -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的最佳方式是什么?
【问题讨论】:
-
你在cmake运行之前有没有尝试过common export CXXFLAGS="..." 和export CXX="..." ?
-
添加
export CXX=/usr/local/bin/g++-10 CXXFLAGS="-isystem /usr/local/Cellar/gcc/10.2.0/include/c++/10.2.0/" ; cmake ...产生相同的结果 -
在使用非系统默认的 std 库时应小心,以防您考虑链接到具有 API 的其他库,您可以通过该 API 传递 std 库的类型。 libstdc++ 和 libc++ 不是二进制兼容的。