【问题标题】:CMake using clang instead of clang++CMake 使用 clang 而不是 clang++
【发布时间】:2015-08-06 21:06:46
【问题描述】:

我正在尝试让 CMake 和 Clang 与我的程序一起工作。我已经将环境变量CC 和CXX 设置为这样:

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 ...

编译完美。

任何帮助将不胜感激。

【问题讨论】:

  • @BaummitAugen 不,我认为是just for C。无论哪种方式,我都尝试将 CC 更改为 /usr/bin/clang++,但没有成功。
  • 这可能只是切线相关,但您可能想尝试我提出的类似问题的答案之一,看看它们是否有效。 stackoverflow.com/questions/28728685/…

标签: c++ cmake clang


【解决方案1】:

可以直接指定cpp编译器来cmake

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

【讨论】:

  • 不,这也不起作用。我得到完全相同的错误。它说它正在调用/usr/bin/clang。
猜你喜欢
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多