首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake未链接指定的库

CMake未链接指定的库
EN

Stack Overflow用户
提问于 2014-08-13 04:27:09
回答 1查看 1.3K关注 0票数 0

我正在做一个托管在这里的项目:https://github.com/gtorrent

现在,我们正在尝试实现更好的Windows支持。库本身(gtorrent-core)构建得很好。然而,每当我们链接到它的时候,就会有许多对各种libtorrent函数(我们要构建的库)的未定义引用。我目前正在使用MSYS2和MinGW-w64-x86_64来构建项目本身以及所有必需的库。

对于ncurses gui,我们的CMakeLists.txt文件如下所示

gtorrent-ncurses/CMakelists.txt:

代码语言:javascript
复制
###############
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)

PROJECT(gtorrent-ncurses)

SET(gtorrent-ncurses_VERSION_MAJOR 0)
SET(gtorrent-ncurses_VERSION_MINOR 0)
SET(gtorrent-ncurses_VERSION_PATCH 1)
###############

# Configure version into Version.hpp
SET (VERSION ${gtorrent-ncurses_VERSION_MAJOR}.${gtorrent-ncurses_VERSION_MINOR}.${gtorrent-ncurses_VERSION_PATCH})
CONFIGURE_FILE (src/utils/Version.hpp.in Version.hpp @ONLY)

# Set compiler options
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -g -Wall")

# Set Cmake to build runtime in cwd
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})

# Find Boost
SET (Boost_USE_STATIC_LIBS ON)
SET (Boost_USE_MULTITHREADED ON)
SET (Boost_USE_STATIC_RUNTIME OFF)
FIND_PACKAGE(Boost COMPONENTS system REQUIRED)

# Find libtorrent
INCLUDE (FindPkgConfig)
PKG_SEARCH_MODULE (LIBTORRENT REQUIRED libtorrent-rasterbar)

# Find ncurses
INCLUDE(CheckLibraryExists)
PKG_SEARCH_MODULE (NCURSESPP REQUIRED ncurses++w)
PKG_SEARCH_MODULE (NCURSES REQUIRED ncursesw)
PKG_SEARCH_MODULE (NCURSESPANEL REQUIRED panelw)

# To find version
INCLUDE_DIRECTORIES(${PROJECT_BINARY_DIR})

ADD_DEFINITIONS (
    ${LIBTORRENT_CFLAGS}
    )

ADD_SUBDIRECTORY(gtorrent-core)
ADD_SUBDIRECTORY(src)

gtorrent-ncurses/src/CMakeLists.txt

代码语言:javascript
复制
INCLUDE_DIRECTORIES (
  ${Boost_INCLUDE_DIRS}
  ${LIBTORRENT_INCLUDE_DIRS}
  ${NCURSESPP_INCLUDE_DIRS}
  ${NCURSES_INCLUDE_DIRS}
  ${CMAKE_SOURCE_DIR}/gtorrent-core/include
  )

ADD_DEFINITIONS (
  ${LIBTORRENT_CFLAGS}
  )

ADD_EXECUTABLE ( gtorrent-ncurses
  main.cpp
  Application.cpp
  MainWindow.cpp
  TorrentView.cpp
  StatusView.cpp
  AddTorrent.cpp
  )

ADD_DEPENDENCIES (gtorrent-ncurses
  gtorrent
  )

LINK_DIRECTORIES (
  ${Boost_LIBRARY_DIRS}
  ${LIBTORRENT_LIBRARY_DIRS}
  )

TARGET_LINK_LIBRARIES ( gtorrent-ncurses
  ${CMAKE_BINARY_DIR}/gtorrent-core/src/libgtorrent.a
  ${Boost_LIBRARIES}
  ${LIBTORRENT_LIBRARIES}
  ${NCURSESPP_LIBRARIES}
  ${NCURSES_LIBRARIES}
  ${NCURSESPANEL_LIBRARIES}
  )

INSTALL (TARGETS gtorrent-ncurses RUNTIME DESTINATION ${PREFIX}/bin/ PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)

下面是编译器错误(太大而无法发布):http://pastebin.com/v3fPXXAE

你知道出什么问题了吗?

EN

回答 1

Stack Overflow用户

发布于 2014-08-13 23:18:18

您正在链接LIBTORRENT_LIBRARIES之前的BOOST_LIBRARIES。尝试交换顺序,先链接LIBTORRENT_LIBRARIES,然后链接BOOST_LIBRARIES。链接器只链接以前链接过的对象实际使用的那些库对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25273496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档