I’m building a project with RabbitMQ but still can not build properly.
I’ve installed the necessary pkgs like AMQP-CPP and add the static lib libev
into my folder.
Anything wrong with my CMakeLists
?
Error:
[ 28%] Linking CXX executable RabbitMQServer
/usr/bin/ld: CMakeFiles/RabbitMQServer.dir/server.cpp.o: in function `AMQP::LibEvHandler::Wrapper::onExpired()':
server.cpp:(.text._ZN4AMQP12LibEvHandler7Wrapper9onExpiredEv[_ZN4AMQP12LibEvHandler7Wrapper9onExpiredEv]+0x9d): undefined reference to `AMQP::TcpConnection::close(bool)'
/usr/bin/ld: server.cpp:(.text._ZN4AMQP12LibEvHandler7Wrapper9onExpiredEv[_ZN4AMQP12LibEvHandler7Wrapper9onExpiredEv]+0xf4): undefined reference to `AMQP::TcpConnection::close(bool)'
/usr/bin/ld: CMakeFiles/RabbitMQServer.dir/server.cpp.o: in function `AMQP::LibEvHandler::Wrapper::onActive(int, int)':
server.cpp:(.text._ZN4AMQP12LibEvHandler7Wrapper8onActiveEii[_ZN4AMQP12LibEvHandler7Wrapper8onActiveEii]+0x7d): undefined reference to `AMQP::TcpConnection::process(int, int)'
/usr/bin/ld: CMakeFiles/RabbitMQServer.dir/server.cpp.o: in function `Producer::~Producer()':
server.cpp:(.text._ZN8ProducerD2Ev[_ZN8ProducerD5Ev]+0x2e): undefined reference to `AMQP::TcpConnection::~TcpConnection()'
/usr/bin/ld: CMakeFiles/RabbitMQServer.dir/rServer.cpp.o: in function `Producer::Producer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
rServer.cpp:(.text+0x11f): undefined reference to `AMQP::TcpConnection::TcpConnection(AMQP::TcpHandler*, AMQP::Address const&)'
/usr/bin/ld: rServer.cpp:(.text+0x239): undefined reference to `AMQP::TcpConnection::~TcpConnection()'
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/RabbitMQServer.dir/build.make:117: RabbitMQServer] Error 1
make[1]: *** [CMakeFiles/Makefile2:121: CMakeFiles/RabbitMQServer.dir/all] Error 2
make: *** [Makefile:111: all] Error 2
CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(RabbitMQProject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
find_package(OpenSSL REQUIRED)
include_directories(${OPENSSL_INCLUDE_DIR})
find_package(amqpcpp REQUIRED)
if (amqpcpp_FOUND)
message(STATUS "AMQP-CPP found via config file")
else ()
message(WARNING "AMQP-CPP not found via config file, setting include and library directories manually")
include_directories("/usr/local/include")
link_directories("/usr/local/lib")
endif ()
add_subdirectory(libev-cmake)
set(SOURCES_SERVER
server.cpp
rServer.cpp
)
set(SOURCES_CLIENT
client.cpp
rClient.cpp
)
add_executable(RabbitMQServer ${SOURCES_SERVER})
add_executable(RabbitMQClient ${SOURCES_CLIENT})
target_link_libraries(RabbitMQServer
amqpcpp
ev
OpenSSL::SSL
OpenSSL::Crypto
)
target_link_libraries(RabbitMQClient
amqpcpp
ev
OpenSSL::SSL
OpenSSL::Crypto
)