неопределенная ссылка на `shm_open ‘с использованием CMake

Я использую CMake под Ubuntu 14.04 для настройки своего проекта.
Мне нужно использовать стороннюю библиотеку (скажем, stuff.so).
В CMakeLists.txt я использую TARGET_LINK_LIBRARIES, чтобы связать библиотеку материала.
Однако я получил ошибку:

DIR_TO_LIB / stuff.so: -1: ошибка: неопределенная ссылка на `shm_open ‘

Я попытался поместить эти флаги в CMakeLists.txt, но это не сработало:

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lrt")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lrt")

Почта (ссылка на сайт) говоря, что -lrt следует указывать в качестве последнего аргумента g ++. В моем случае, когда используется CMake, как мне это сделать?

ОБНОВИТЬ:
я добавил

SET (CMAKE_VERBOSE_MAKEFILE 1)

и я обнаружил, что -lrt не последний (хотя я поставил его в конце целевой ссылки). Пожалуйста, посмотрите это ссылка на сайт для компиляции вывода.

Как вы можете видеть из результатов компиляции, есть некоторые флаги связывания для opencv.
Я не понимаю, как это могло произойти, когда я сначала связал библиотеку OpenCV в TARGET_LINK_LIBRARIES. Как CMake обрабатывает этот порядок связывания?

Пожалуйста, также посмотрите мой CMakeLists.txt.

Спасибо.

4

Решение

Вам нужно добавить rt в TARGET_LINK_LIBRARIES как последний, например:

TARGET_LINK_LIBRARIES(my_app ${Boost_LIBRARIES} rt)

Вы можете проверить положение rt включив подробный вывод сборки:

SET (CMAKE_VERBOSE_MAKEFILE 1)
3

Другие решения


По вопросам рекламы [email protected]