使用poco库构建项目时,我收到以下错误:

/Applications/CLion.app/Contents/bin/cmake/bin/cmake --build /Users/alan/Library/Caches/clion11/cmake/generated/12b7e3f2/12b7e3f2/Debug --target csvreader -- -j 2
    [ 50%] Linking CXX executable csvreader
    Undefined symbols for architecture x86_64:
      "Poco::AtomicCounter::AtomicCounter(int)", referenced from:
          Poco::ReferenceCounter::ReferenceCounter() in dataConn.cpp.o
      "Poco::AtomicCounter::~AtomicCounter()", referenced from:
          Poco::ReferenceCounter::~ReferenceCounter() in dataConn.cpp.o
      ... [many more]

这使用以下CMake构建文件:

cmake_minimum_required(VERSION 3.3)
    project(csvreader)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    set(SOURCE_FILES dataConn.cpp )
    #set(Boost_USE_STATIC_LIBS ON)
    #set(Boost_DEBUG ON)

    set(POCO_ROOT "/Users/alan/ClionProjects/csvreader/poco-1.6.1-all")
    set(POCO_INCLUDE_DIR "${POCO_ROOT}/Foundation/include" "${POCO_ROOT}/Util/include" "${POCO_ROOT}/Data/include" "${POCO_ROOT}/Data/SQLite/include")
    set(POCO_LIBRARY_DIR ${POCO_ROOT}/lib/Darwin/x86_64)
    message(STATUS "[ ${POCO_ROOT} ]" " POCO_ROOT")

    include_directories("${POCO_INCLUDE_DIR}")
    set(POCO_LIBS "")
    set(POCO_LIB_NAMES PocoFoundationd PocoUtild libPocoDatad PocoDataSQLited )
    message(STATUS "[ ${POCO_LIB_NAMES} ]" " POCO_LIB_NAMES")
    #FIND_LIBRARY(POCO_LIBS
    #        NAMES ${POCO_LIB_NAMES}
    #        PATHS ${POCO_LIBRARY_DIR}
    #        NO_DEFAULT_PATH)
    #message(STATUS "[ ${POCO_LIBS} ]" " POCO_LIBS")
    LINK_DIRECTORIES(${POCO_LIBRARY_DIR})
    add_executable(csvreader ${SOURCE_FILES} )
    target_link_libraries(csvreader  ${POCO_LIBRARY_DIR} ${POCO_LIBS})

我检查了试图访问的静态库,并找到了第一个未找到的符号 . 所以这似乎是CMake无法自己找到库的问题 . 它是否相关,这是在OS X 10.10.5上,一切都是64位 .

谁有人建议解决方案?

为了回应下面Robin的评论,我尝试取消注释FIND_LIBRARY并插入第一个库(其中包含符号Poco :: AtomicCounter :: AtomicCounter(int)) . 见下文 . 尝试使用此构建导致相同的错误,上面的符号和其他没有找到 .

cmake_minimum_required(VERSION 3.3)
    project(csvreader)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    set(SOURCE_FILES dataConn.cpp )
    #set(Boost_USE_STATIC_LIBS ON)
    #set(Boost_DEBUG ON)

    set(POCO_ROOT "/Users/alan/ClionProjects/csvreader/poco-1.6.1-all")
    set(POCO_INCLUDE_DIR "${POCO_ROOT}/Foundation/include" "${POCO_ROOT}/Util/include" "${POCO_ROOT}/Data/include" "${POCO_ROOT}/Data/SQLite/include")
    set(POCO_LIBRARY_DIR ${POCO_ROOT}/lib/Darwin/x86_64)
    message(STATUS "[ ${POCO_ROOT} ]" " POCO_ROOT")

    include_directories("${POCO_INCLUDE_DIR}")
    set(POCO_LIBS "")
    set(POCO_LIB_NAMES PocoFoundationd PocoUtild libPocoDatad PocoDataSQLited )
    set(POCO_LIB_1 PocoFoundationd)
    message(STATUS "[ ${POCO_LIB_NAMES} ]" " POCO_LIB_NAMES")
    FIND_LIBRARY(POCO_LIBS
            NAMES ${POCO_LIB_1}
            PATHS ${POCO_LIBRARY_DIR}
            NO_DEFAULT_PATH)
    message(STATUS "[ ${POCO_LIBS} ]" " POCO_LIBS")
    #LINK_DIRECTORIES(${POCO_LIBRARY_DIR})
    add_executable(csvreader ${SOURCE_FILES} )
    target_link_libraries(csvreader  ${POCO_LIBRARY_DIR} ${POCO_LIBS})