我想在CMake项目中使用libc ++和Arch Linux上的clang。我安装了libc ++并在CMakeLists.txt中添加了以下行,如" Linux部分LLVM site中所述;在程序中使用libc ++":
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
set(CMAKE_EXE_LINKER_FLAGS "-lc++abi")
我曾尝试过" ++ abi"在链接器的标志中,但它没有帮助。我需要一些帮助来弄清楚我应该在我的CMakeLists.txt中写些什么。
答案 0 :(得分:14)
不要忘记将编译器设置为clang ++:
set(CMAKE_CXX_COMPILER "clang++")
此外,清除cmake生成的文件(删除文件夹CMakeFiles
和CMakeCache.txt
)。
根据您的系统,它也可能有助于设置
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")
答案 1 :(得分:0)
此刻,在CMake中执行此操作的“适当”方法,直到添加了特定的基本功能以切换标准库为止,即使用工具链文件。
在该工具链文件中,您可以指定编译器等,类似于此处的其他答案。
关于工具链的最大优点是,可以在命令行上(使用-DCMAKE_TOOLCHAIN_FILE = path / to / file)或安装了CMakeTools扩展的VSCode中快速替换掉它们,
但是,必须手动编写自己的工具链文件仍然是一件繁琐的工作!不好玩!
幸运的是,我偶然发现了这个github,它维护着它们的套件,因此您不必从头开始编写它们!应该更容易出错。