diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d9bd0e13..6cf300e0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,4 +1,8 @@ # CMake build script for ZeroMQ tests +cmake_minimum_required(VERSION "3.0") + +# name of Windows project will tests.sln +PROJECT(tests) set(tests test_system @@ -105,10 +109,26 @@ if(WITH_VMCI) ) endif() +# add location of platform.hpp for Windows builds +if(WIN32) + add_definitions(-DZMQ_CUSTOM_PLATFORM_HPP) + include_directories(../builds/msvc) + link_libraries(Ws2_32.lib) +endif() + +# add library and include dirs for all targets +link_libraries(libzmq) +include_directories("${CMAKE_SOURCE_DIR}/../include") +include_directories("${CMAKE_SOURCE_DIR}/src") + foreach(test ${tests}) add_executable(${test} ${test}.cpp) - target_include_directories(${test} PRIVATE "${CMAKE_SOURCE_DIR}/src") - target_link_libraries(${test} libzmq) + if(WIN32) + # it will only link correctly for DEBUG builds in Windows (I don't know how to specify the target and target library in CMake) + SET_TARGET_PROPERTIES( ${test} PROPERTIES LINK_FLAGS "/LIBPATH:../bin/Win32/Debug/v120/dynamic" ) + else() + link_directories(${test} PRIVATE "${CMAKE_SOURCE_DIR}/../lib") + endif() if(RT_LIBRARY) target_link_libraries(${test} ${RT_LIBRARY} ) @@ -137,3 +157,4 @@ foreach(TEST_SOURCE ${ALL_TEST_SOURCES}) message(AUTHOR_WARNING "Test '${TESTNAME}' is not known to CTest.") endif() endforeach() + diff --git a/tests/README.md b/tests/README.md index 791ca386..1fba9b67 100644 --- a/tests/README.md +++ b/tests/README.md @@ -15,4 +15,12 @@ Please use only ANSI C99 in test cases, no C++. This is to make the code more re On many slower environments, like embedded systems, VMs or CI systems, test might fail because it takes time for sockets to settle after a connect. If you need to add a sleep, please be consistent with all the other tests and use: - msleep (SETTLE_TIME); \ No newline at end of file + msleep (SETTLE_TIME); + +# Building tests in Windows + +Install CMAKE +CMD> CMAKE libzmq/tests +CMD> tests.sln +CMD> # build all projects in the solution +