2013-10-30 43 views
2

我試圖在我的程序中使用live555庫。我使用CMake作爲構建系統。我做這個的CMakeLists.txt:使用CMake編譯針對live555靜態庫

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()': 

每個庫已經編譯。似乎這些圖書館彼此依賴,我必須將它們連接在一起或以特定順序連接。有誰知道這是否是這種情況?怎麼做?

回答

2

這是不是因爲CMake的,但內部LIVE555的依賴,就應該修改的作品這樣的順序:

set(LIVE_LIBRARIES groupsock liveMedia BasicUsageEnvironment UsageEnvironment) 
+1

對我來說,爲了'liveMedia groupsock BasicUsageEnvironment UsageEnvironment'工作太 – Micka