find_package(Boost COMPONENTS log unit_test_framework REQUIRED)

# If we can change directory here add_definition and test-specific stuff could be moved to the test directory
file(GLOB TEST_SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *Test.cpp)
add_definitions(-DBOOST_TEST_DYN_LINK)

foreach(testSrc ${TEST_SRCS})
    #Extract the filename without an extension (NAME_WE)
    get_filename_component(testName ${testSrc} NAME_WE)

    #Add compile target
    add_executable(${testName} ${testSrc})

    include_directories("${PROJECT_SOURCE_DIR}/ble")
    include_directories("${PROJECT_SOURCE_DIR}/include")
    add_dependencies(${testName} ble)
    target_link_libraries(${testName} ble)
    target_link_libraries(${testName} pthread)
    target_link_libraries(${testName} ${Boost_LIBRARIES})

    #I like to move testing binaries into a testBin directory
    set_target_properties(${testName} PROPERTIES
        RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/test)

    #Finally add it to test execution -
    #Notice the WORKING_DIRECTORY and COMMAND
    add_test(NAME ${testName}
             WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/testBin
             COMMAND ${CMAKE_BINARY_DIR}/testBin/${testName})
endforeach(testSrc)