Я использую 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.
Спасибо.
Вам нужно добавить rt
в TARGET_LINK_LIBRARIES
как последний, например:
TARGET_LINK_LIBRARIES(my_app ${Boost_LIBRARIES} rt)
Вы можете проверить положение rt
включив подробный вывод сборки:
SET (CMAKE_VERBOSE_MAKEFILE 1)