我是从源代码构建clang,但是使用的gcc 7.2版本并不适用于普通版本。我希望生成的clang++
二进制文件默认使用此工具链。我试着这样做:
$ export GCC_PREFIX=/path/to/gcc/7.2
$ mkdir -p build
$ cd build
$ cmake -G Ninja -DCMAKE_C_COMPILER=${GCC_PREFIX}/bin/gcc \
-DCMAKE_CXX_COMPILER=${GCC_PREFIX}/bin/g++ \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_TARGETS_TO_BUILD=X86 ..
但是生成的构建仅在/usr/include/c++/4.8.5
中查找标准库包含而不是/path/to/gcc/7.2/include
,就像我想要的那样(并且,如路径所示,4.8.5有点旧)。有没有办法构建clang,以便生成的二进制文件将搜索我想要的包含目录的路径?
注意,我知道我使用--gcc-toolchain=${GCC_PREFIX}
运行生成的二进制文件。这样可行。我想要做的是将其构建到二进制文件中,这样我就不必每次都输入它。
答案 0 :(得分:3)
刚发现这个。正确的方法是提供$ cmake -G Ninja -DCMAKE_C_COMPILER=${GCC_PREFIX}/bin/gcc \
-DCMAKE_CXX_COMPILER=${GCC_PREFIX}/bin/g++ \
-DGCC_INSTALL_PREFIX=${GCC_PREFIX} \
-DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_TARGETS_TO_BUILD=X86 ..
:
--gcc-toolchain=${GCC_PREFIX}
这是对的。生成的clang二进制文件的行为就像您根据需要提供Name
一样。