Problem: Examples are not compiled

Solution: Compile the examples when tests are compiled and using C++11
or greater.
This commit is contained in:
Gudmundur Adalsteinsson 2020-10-10 13:22:26 +00:00
parent 03243ad64d
commit 7a6c904f94
3 changed files with 32 additions and 4 deletions

View File

@ -101,4 +101,7 @@ option(CPPZMQ_BUILD_TESTS "Whether or not to build the tests" ON)
if (CPPZMQ_BUILD_TESTS)
enable_testing()
add_subdirectory(tests)
if (CMAKE_CXX_STANDARD AND NOT CMAKE_CXX_STANDARD EQUAL 98 AND CMAKE_CXX_STANDARD GREATER_EQUAL 11)
add_subdirectory(examples)
endif()
endif()

23
examples/CMakeLists.txt Normal file
View File

@ -0,0 +1,23 @@
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(cppzmq-examples CXX)
# place binaries and libraries according to GNU standards
include(GNUInstallDirs)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR})
find_package(Threads)
add_executable(
pubsub_multithread_inproc
pubsub_multithread_inproc.cpp
)
target_link_libraries(
pubsub_multithread_inproc
PRIVATE cppzmq
PRIVATE ${CMAKE_THREAD_LIBS_INIT}
)

View File

@ -40,9 +40,10 @@ void SubscriberThread1(zmq::context_t *ctx) {
zmq::recv_result_t result =
zmq::recv_multipart(subscriber, std::back_inserter(recv_msgs));
assert(result && "recv failed");
assert(*result == 2);
std::cout << "Thread2: [" << recv_msgs[0].to_string_view() << "] "
<< recv_msgs[1].to_string_view() << std::endl;
std::cout << "Thread2: [" << recv_msgs[0].to_string() << "] "
<< recv_msgs[1].to_string() << std::endl;
}
}
@ -60,9 +61,10 @@ void SubscriberThread2(zmq::context_t *ctx) {
zmq::recv_result_t result =
zmq::recv_multipart(subscriber, std::back_inserter(recv_msgs));
assert(result && "recv failed");
assert(*result == 2);
std::cout << "Thread3: [" << recv_msgs[0].to_string_view() << "] "
<< recv_msgs[1].to_string_view() << std::endl;
std::cout << "Thread3: [" << recv_msgs[0].to_string() << "] "
<< recv_msgs[1].to_string() << std::endl;
}
}