Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
- PROJECT(socket)
- SET(D ${CMAKE_CURRENT_SOURCE_DIR})
- SET(CTAGS .ctags)
- SET(COMMON_SOURCES shared.c packages.c log.c)
- FILE(GLOB HEADERS ${D}/*.h)
- SET(CMAKE_CXX_FLAGS -Wall -Wextra -pedantic -std=c99)
- INCLUDE_DIRECTORIES(${D})
- ##################################################
- # libs
- ##################################################
- IF (WIN32)
- FIND_LIBRARY(LIB_WS2_32 ws2_32)
- IF (NOT LIB_WS2_32)
- MESSAGE("Library ws2_32 not found!")
- RETURN()
- ENDIF()
- ENDIF()
- ADD_LIBRARY(shared_objs STATIC ${COMMON_SOURCES})
- ##################################################
- # server
- ##################################################
- FILE(GLOB S_SOURCES ${D}/server*.c)
- SET(S_SOURCES ${S_SOURCES})# ${COMMON_SOURCES})
- ADD_EXECUTABLE(server ${S_SOURCES})
- TARGET_LINK_LIBRARIES(server shared_objs)
- ##################################################
- # client
- ##################################################
- FILE(GLOB C_SOURCES ${D}/client*.c)
- SET(C_SOURCES ${C_SOURCES})# ${COMMON_SOURCES})
- ADD_EXECUTABLE(client ${C_SOURCES})
- TARGET_LINK_LIBRARIES(client shared_objs)
- ##################################################
- # ctags
- ##################################################
- SET_SOURCE_FILES_PROPERTIES(${CTAGS} PROPERTIES GENERATED true)
- ADD_CUSTOM_COMMAND(
- OUTPUT ${CTAGS}
- COMMAND ctags --append -R -f ${CTAGS} $^ &> /dev/null
- DEPENDS ${S_SOURCES} ${C_SOURCES} ${HEADERS}
- )
- ADD_CUSTOM_TARGET(ctags ALL DEPENDS ${CTAGS})
- ##################################################
- # tests functions
- ##################################################
- FUNCTION (INIT_TESTS target_name)
- IF (NOT TARGET tests)
- ADD_CUSTOM_TARGET(${target_name})
- INCLUDE_DIRECTORIES(${D}/tests)
- ENDIF()
- ENDFUNCTION()
- FUNCTION (ADD_TEST_TARGET target_name test_name)
- ADD_EXECUTABLE(${test_name} EXCLUDE_FROM_ALL ${D}/tests/${test_name}.c ${TEST_SOURCES})
- ADD_DEPENDENCIES(${target_name} ${test_name})
- ADD_TEST(${test_name} ${test_name})
- ENDFUNCTION()
- ##################################################
- # tests
- ##################################################
- SET(TEST_SOURCES server.c client.c ${COMMON_SOURCES})
- ENABLE_TESTING()
- INIT_TESTS(tests)
- ADD_TEST_TARGET(tests pkg_api)
- ADD_TEST_TARGET(tests ip_range)
- ADD_TEST_TARGET(tests pkg_test)
Advertisement
Add Comment
Please, Sign In to add comment