将libc++链接到Linux上的CMake项目

Linking libc++ to CMake project on Linux

本文关键字:上的 CMake 项目 Linux libc++ 链接      更新时间:2023-10-16

我想在CMake项目中将libc++与Arch Linux上的clang一起使用。我安装了libc ++并在CMakeLists中添加了以下行.txt正如Linux部分的LLVM站点"在您的程序中使用libc ++"中所述:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -stdlib=libc++")
set(CMAKE_EXE_LINKER_FLAGS "-lc++abi")

我只在链接器的标志中尝试了"++abi",但它没有帮助。我需要一些帮助来弄清楚我应该在我的CMakeLists.txt中写什么。

不要忘记将编译器设置为 clang++:

set(CMAKE_CXX_COMPILER "clang++")

另外,清除 cmake 生成的文件(删除文件夹CMakeFilesCMakeCache.txt)。

根据您的系统,设置也可能会有所帮助

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stdlib=libc++ -lc++abi")

目前在 CMake 中执行此操作的"正确"方法是使用工具链文件,直到添加特定的基本功能来切换标准库。

在该工具链文件中,您指定编译器等类似于此处的其他答案。

但是工具链的优点在于它们可以在命令行上快速交换(使用 -DCMAKE_TOOLCHAIN_FILE=path/to/file)或在安装了 CMakeTools 扩展的 VSCode 中,也可能在其他编辑器中。

但是,必须手动编写自己的工具链文件是另一件晦涩难懂的苦差事!没意思!

幸运的是,我偶然发现了这个 github,它维护了一套它们,所以你不必从头开始编写它们!应该不太可能弄错。

https://github.com/ruslo/polly