Я пытаюсь заставить CMake и Clang работать с моей программой. Я устанавливал переменные окружения CC
и CXX
как таковой:CMake using clang вместо clang ++
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 Нет, я думаю, что это [только для C] (http://stackoverflow.com/a/11394799/3299106). В любом случае, я попытался изменить CC на '/ usr/bin/clang ++', и это не сработало. – GoldenBadger
Это может касаться только касательно, но вы можете попробовать один из ответов на аналогичный вопрос, который я задал, и посмотреть, работают ли они. http://stackoverflow.com/questions/28728685/force-target-link-libraries-to-use-c-linker – user3288829