我有一个带有C++ (和conan)的CMake项目,我想将编译器切换到GCC-10,以及相应的stdlibc++。我该如何在MacOS (大苏尔)上做到这一点。
在cmake which g++-10
命令中指定which g++-10
可以成功地切换到系统上的g++ 10编译器(随brew一起安装)。但是,我没有看到包含和stdlib被更改的任何指示符。
我的命令看起来是:
/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的最佳方法是什么?
发布于 2020-09-27 10:14:19
要更改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++")
若要更新conan (例如default
),请使用以下命令:
conan profile update settings.compiler.libcxx=stdlibc++ default
注: -stdlib
是一个Clang旗帜,不会与GCC发布的任何版本一起工作。GCC总是使用libstdc++
,除非您告诉它不使用带有-nostdlib
选项的标准库(在这种情况下,您需要避免使用任何标准库特性,或者使用-I
、-L
和-l
标志将其指向另一组标头和库文件)。
https://stackoverflow.com/questions/64091439
复制