我正在Ubuntu 14.04下使用CMake配置我的项目。我需要使用第三方库(比如stuff.so)。在CMakeLists.txt中,我使用TARGET_LINK_LIBRARIES来链接stuff库。然而,我遇到了一个错误:
DIR_TO_LIB/stuff.so:-1: 错误:对`shm_open'的引用未定义。
我尝试将这些标志放入CMakeLists.txt中,但没有起作用:
一篇帖子(链接)建议将-lrt放在g++的最后一个参数。在我使用CMake的情况下,我该怎么做呢? 更新: 我添加了。
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的链接标志。我不明白这是怎么发生的,因为我在TARGET_LINK_LIBRARIES中首先链接了OpenCV库。CMake是如何处理这些链接顺序的?
请还参考我的CMakeLists.txt。
谢谢。