c++ - 使用 CMake 针对 live555 静态库进行编译

标签 c++ compilation cmake static-linking live555

我正在尝试在我的程序中使用 live555 库。我使用 CMake 作为构建系统。我制作了这个 CMakeLists.txt :

aux_source_directory(. SRC_LIST)
include_directories("${PROJECT_SOURCE_DIR}/libs/live/BasicUsageEnvironment/include")
include_directories("${PROJECT_SOURCE_DIR}/libs/live/UsageEnvironment/include")
include_directories("${PROJECT_SOURCE_DIR}/libs/live/groupsock/include")
include_directories("${PROJECT_SOURCE_DIR}/libs/live/liveMedia/include")
link_directories("${PROJECT_SOURCE_DIR}/libs/live/BasicUsageEnvironment")
link_directories("${PROJECT_SOURCE_DIR}/libs/live/UsageEnvironment")
link_directories("${PROJECT_SOURCE_DIR}/libs/live/groupsock")
link_directories("${PROJECT_SOURCE_DIR}/libs/live/liveMedia")
add_executable(${PROJECT_NAME} ${SRC_LIST})
set(LIVE_LIBRARIES BasicUsageEnvironment UsageEnvironment groupsock liveMedia)
target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBS} x264 avcodec swscale ${LIVE_LIBRARIES})

编译/链接我得到了很多类似这样的错误:

/home/davide/program/libs/live/groupsock/libgroupsock.a(NetAddress.o):-1: In function `AddressPortLookupTable::AddressPortLookupTable()':

每个库都已编译。似乎这些库相互依赖,我必须将它们链接在一起或按特定顺序链接。有谁知道是否是这种情况?怎么做?

最佳答案

这不是因为 cmake 而是内部 live555 依赖项,它应该可以像这样修改顺序:

set(LIVE_LIBRARIES groupsock liveMedia BasicUsageEnvironment UsageEnvironment)

关于c++ - 使用 CMake 针对 live555 静态库进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19682453/

相关文章:

c++ - 使用 cmake 编译时 undefined reference

cmake - 如何在自定义 CMake 命令中包含文字双引号?

c++ - Qt - QScrollArea - 将添加的小部件对齐到顶部

c++ - 了解 OpenCV fitEllipse 方法

c++ - 在第二个节点解析嵌套的 yml 文件

python - Cython 尝试编译两次,但失败了

c - 已编译编译器对已编译代码的性能

compilation - 使用 grunt-contrib-stylus 进行编译时,手写笔出现 "EOS"错误

cmake - 如何通过CMake交叉编译CMake for ARM

C++ MySQL 连接器 PrepareStatement Bad_Access