Проблема с проектом проекта CMake

У меня есть следующая проблема. На моем Ubuntu я пытаюсь построить проект и получить следующие ошибки компоновщика:

/usr/bin/ld:
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_thread.a(once.o): undefined reference to symbol '[email protected]@GLIBC_2.2.5'
/lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO
missing from command line collect2: error: ld returned 1 exit status
make[2]: *** [sunprint] Error 1 make[1]: ***
[CMakeFiles/sunprint.dir/all] Error 2 make: *** [all] Error 2
*** Failure: Exit code 2 ***

Я работаю под рабочим столом ubuntu 13, GCC 4.8, boost ver. составляет 1,54. В качестве IDE я работаю с это KDevelop. Я могу предоставить любую дополнительную информацию об этой проблеме, если это необходимо, но теперь я застрял эта проблема связывания.

Любые идеи? Thanx заранее.

Ответ 1

add_definitions добавляет только входные данные для препроцессора, который работает еще до того, как компилятор начинает свою деятельность и даже намного дальше от ссылки на исполняемый файл, предполагается, что выполняется шаг ld.

То, что вы хотите, чтобы ld разрешать зависимости времени между ссылками, - это команда CMake target_link_libraries, которая для данной цели добавляет несколько libs для ссылки против после компиляции.

В этом случае соответствующий вызов может выглядеть так:

target_link_libraries(${PROJECT_NAME} [...] -lpthread [...]) #obviously without the '[...]' and the correct target name

Ответ 2

У меня была аналогичная проблема, но с mpich. Оба:

target_link_libraries(${PROJECT_NAME} [...] -lmpich [...])

и

target_link_libraries(${PROJECT_NAME} [...] mpich [...])

работал правильно.