# CMake build script for ZeroMQ unit tests cmake_minimum_required(VERSION "2.8.1") set(unittests unittest_ypipe unittest_poller unittest_mtrie ) #IF (ENABLE_DRAFTS) # list(APPEND tests # ) #ENDIF (ENABLE_DRAFTS) # add location of platform.hpp for Windows builds if(WIN32) add_definitions(-DZMQ_CUSTOM_PLATFORM_HPP) add_definitions(-D_WINSOCK_DEPRECATED_NO_WARNINGS) # Same name on 64bit systems link_libraries(ws2_32.lib) endif() include_directories("${CMAKE_SOURCE_DIR}/include" "${CMAKE_SOURCE_DIR}/src" "${CMAKE_BINARY_DIR}") foreach(test ${unittests}) # target_sources not supported before CMake 3.1 add_executable(${test} ${test}.cpp) # per-test directories not generated on OS X / Darwin if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES "Clang.*") link_directories(${test} PRIVATE "${CMAKE_SOURCE_DIR}/../lib") endif() target_link_libraries(${test} libzmq-static ${OPTIONAL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} unity) if(RT_LIBRARY) target_link_libraries(${test} ${RT_LIBRARY}) endif() if(WIN32) add_test(NAME ${test} WORKING_DIRECTORY ${LIBRARY_OUTPUT_PATH} COMMAND ${test}) else() add_test(NAME ${test} COMMAND ${test}) endif() set_tests_properties(${test} PROPERTIES TIMEOUT 10) # TODO prevent libzmq (non-static) being in the list of link libraries at all get_target_property(LIBS ${test} LINK_LIBRARIES) list(REMOVE_ITEM LIBS libzmq) message("Link libraries of ${test}: ${LIBS}") set_target_properties(${test} PROPERTIES LINK_LIBRARIES "${LIBS}") endforeach() #Check whether all tests in the current folder are present #TODO duplicated with tests/CMakeLists.txt, define as a function? file(READ "${CMAKE_CURRENT_LIST_FILE}" CURRENT_LIST_FILE_CONTENT) file(GLOB ALL_TEST_SOURCES "test_*.cpp") foreach(TEST_SOURCE ${ALL_TEST_SOURCES}) get_filename_component(TESTNAME "${TEST_SOURCE}" NAME_WE) string(REGEX MATCH "${TESTNAME}" MATCH_TESTNAME "${CURRENT_LIST_FILE_CONTENT}") if (NOT MATCH_TESTNAME) message(AUTHOR_WARNING "Test '${TESTNAME}' is not known to CTest.") endif() endforeach()