Cmake链接到mysql&;卷曲,LNK2019

Cmake链接到mysql&;卷曲,LNK2019,mysql,curl,linker,cmake,Mysql,Curl,Linker,Cmake,好吧,我刚开始和CMake玩了。我正在尝试构建一个同时依赖于MySQL和CURL的项目。这是目录结构: ./ ./src ./cmake CMakeLists.txt 其实很简单,src只包含9个Cpp文件和一个CMakeLists.txt 运行CMake时,一切正常。我只是因为MySQL和CURL没有有效链接而收到一堆链接器错误。我做错了什么 根目录CMakeLists.txt: PROJECT(IRCBot) INCLUDE(CPack) SET(CMAKE_M

好吧,我刚开始和CMake玩了。我正在尝试构建一个同时依赖于MySQL和CURL的项目。这是目录结构:

./
    ./src
    ./cmake
    CMakeLists.txt
其实很简单,src只包含9个Cpp文件和一个CMakeLists.txt

运行CMake时,一切正常。我只是因为MySQL和CURL没有有效链接而收到一堆链接器错误。我做错了什么

根目录CMakeLists.txt:

PROJECT(IRCBot)

INCLUDE(CPack)

SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake)
INCLUDE(${CMAKE_SOURCE_DIR}/cmake/FindCURL.cmake)
CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR)

FIND_PACKAGE(CURL)
IF(CURL_FOUND)
  MESSAGE(STATUS "Curl libraries found at: ${CURL_LIBRARIES}")
  MESSAGE(STATUS "Curl includes found at: ${CURL_INCLUDE_DIRS}")
else()
  MESSAGE(SEND_ERROR "Could not find cURL on your system")
ENDIF(CURL_FOUND)

FIND_PACKAGE(MySQL)
IF(MYSQL_FOUND)
    MESSAGE(STATUS "MySQL found at: ${MYSQL_INCLUDE_DIR}, ${MYSQL_LIBRARIES}")
ELSE(MYSQL_FOUND)
    MESSAGE(SEND_ERROR "Couldn't find MySQL include files and/or library")
ENDIF(MYSQL_FOUND)

ADD_SUBDIRECTORY(src)
和./src/CMakeLists.txt

FILE(GLOB_RECURSE IRCBot_files *.cpp *.h)

SET(IRCBot_src
    ${IRCBot_files}
    )

INCLUDE_DIRECTORIES(
    ${CURL_INCLUDE_DIRS}
    ${MYSQL_INCLUDE_DIR}
    )

LINK_DIRECTORIES(
    ${MYSQL_LIBRARIES}
    ${CURL_LIBRARIES}
)
ADD_EXECUTABLE(IRCBot ${IRCBot_src})

INSTALL(TARGETS IRCBot DESTINATION ${INSTALL_DIR}/bin)

在这种情况下,您不需要调用
LINK\u DIRECTORIES()
,因为它告诉编译器在哪里可以找到libs

相反,使用

TARGET_LINK_LIBRARIES(IRCBot
    ${MYSQL_LIBRARIES}
    ${CURL_LIBRARIES})

因为
${MYSQL\u LIBRARIES}
包含绝对路径。

在这种情况下,您不需要调用
LINK\u DIRECTORIES()
,因为它告诉编译器在哪里可以找到libs

相反,使用

TARGET_LINK_LIBRARIES(IRCBot
    ${MYSQL_LIBRARIES}
    ${CURL_LIBRARIES})

因为
${MYSQL\u LIBRARIES}
包含绝对路径。

在您给我答案之前不久,我发现了它。然而,虽然它现在可以在Linux上正常构建,但它不想在Windows上构建——我仍然会遇到链接器错误。很遗憾,我现在无法测试,我正在重新安装VS2012。在你给我答案之前不久我就发现了。然而,虽然它现在可以在Linux上正常构建,但它不想在Windows上构建——我仍然会遇到链接器错误。遗憾的是,我现在无法测试,我正在重新安装VS2012。