2015-08-06 2 views
3

Я пытаюсь заставить 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 ... 

он компилируется отлично.

Любая помощь была бы принята с благодарностью.

+0

@BaummitAugen Нет, я думаю, что это [только для C] (http://stackoverflow.com/a/11394799/3299106). В любом случае, я попытался изменить CC на '/ usr/bin/clang ++', и это не сработало. – GoldenBadger

+0

Это может касаться только касательно, но вы можете попробовать один из ответов на аналогичный вопрос, который я задал, и посмотреть, работают ли они. http://stackoverflow.com/questions/28728685/force-target-link-libraries-to-use-c-linker – user3288829

ответ

-1

Вы можете указать CPP компилятор Cmake непосредственно

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

+0

Нет, это тоже не сработает. Я получаю точно такие же ошибки. И он говорит, что он вызывает '/ usr/bin/clang'. – GoldenBadger

Смежные вопросы