使用clang代替clang++

CMake using clang instead of clang++

本文关键字:clang++ 代替 clang 使用      更新时间:2023-10-16

我正试图让CMake和Clang与我的程序工作。我将环境变量CCCXX设置为:

export CC=/usr/bin/clang
export CXX=/usr/bin/clang++

但是当我运行cmake .make时,我得到一个链接器错误,因为它使用/usr/bin/clang而不是/usr/bin/clang++,因此无法看到c++标准库。在运行make VERBOSE=1之后,我得到的是:

/usr/bin/clang   -std=c++11 -Wall -O3   CMakeFiles/Saruman.dir/Board.cpp.o
CMakeFiles/Saruman.dir/CaptureList.cpp.o CMakeFiles/Saruman.dir/Evaluation.cpp.o
CMakeFiles/Saruman.dir/main.cpp.o CMakeFiles/Saruman.dir/MoveList.cpp.o
CMakeFiles/Saruman.dir/Search.cpp.o CMakeFiles/Saruman.dir/TranspositionTables.cpp.o 
CMakeFiles/Saruman.dir/UCI.cpp.o  -o Saruman -rdynamic -lpthread 
CMakeFiles/Saruman.dir/Board.cpp.o: In function Board::Board(std::string)':
/home/terry/code/chess/engine/Source/Board.cpp:(.text+0x100): undefined reference to
`std::string::compare(char const*) const'

显然是调用/usr/bin/clang而不是/usr/bin/clang++。当我手动运行

clang++ -std=c++11 -Wall -O3 ...

它可以完美地编译。

可以直接指定要生成的cpp编译器

cmake . -DCMAKE_CXX_COMPILER=/usr/bin/clang++