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

时间:2014-11-27 20:10:59

标签: c++ linux cmake llvm clang++

我想在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中写些什么。

2 个答案:

答案 0 :(得分:14)

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

set(CMAKE_CXX_COMPILER "clang++")

此外,清除cmake生成的文件(删除文件夹CMakeFilesCMakeCache.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,它维护着它们的套件,因此您不必从头开始编写它们!应该更容易出错。

https://github.com/ruslo/polly