aspirinus

cmake

Jun 19th, 2012
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
CMake 2.34 KB | None | 0 0
  1. CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
  2. PROJECT(socket)
  3.  
  4. SET(D ${CMAKE_CURRENT_SOURCE_DIR})
  5.  
  6. SET(CTAGS .ctags)
  7. SET(COMMON_SOURCES shared.c packages.c log.c)
  8. FILE(GLOB HEADERS ${D}/*.h)
  9.  
  10. SET(CMAKE_CXX_FLAGS -Wall -Wextra -pedantic -std=c99)
  11. INCLUDE_DIRECTORIES(${D})
  12.  
  13. ##################################################
  14. # libs
  15. ##################################################
  16. IF (WIN32)
  17.     FIND_LIBRARY(LIB_WS2_32 ws2_32)
  18.     IF (NOT LIB_WS2_32)
  19.         MESSAGE("Library ws2_32 not found!")
  20.         RETURN()
  21.     ENDIF()
  22. ENDIF()
  23.  
  24. ADD_LIBRARY(shared_objs STATIC ${COMMON_SOURCES})
  25.  
  26. ##################################################
  27. # server
  28. ##################################################
  29. FILE(GLOB S_SOURCES ${D}/server*.c)
  30. SET(S_SOURCES ${S_SOURCES})# ${COMMON_SOURCES})
  31. ADD_EXECUTABLE(server ${S_SOURCES})
  32. TARGET_LINK_LIBRARIES(server shared_objs)
  33.  
  34. ##################################################
  35. # client
  36. ##################################################
  37. FILE(GLOB C_SOURCES ${D}/client*.c)
  38. SET(C_SOURCES ${C_SOURCES})# ${COMMON_SOURCES})
  39. ADD_EXECUTABLE(client ${C_SOURCES})
  40. TARGET_LINK_LIBRARIES(client shared_objs)
  41.  
  42. ##################################################
  43. # ctags
  44. ##################################################
  45. SET_SOURCE_FILES_PROPERTIES(${CTAGS} PROPERTIES GENERATED true)
  46. ADD_CUSTOM_COMMAND(
  47.     OUTPUT ${CTAGS}
  48.     COMMAND ctags --append -R -f ${CTAGS} $^ &> /dev/null
  49.     DEPENDS ${S_SOURCES} ${C_SOURCES} ${HEADERS}
  50. )
  51. ADD_CUSTOM_TARGET(ctags ALL DEPENDS ${CTAGS})
  52.  
  53. ##################################################
  54. # tests functions
  55. ##################################################
  56. FUNCTION (INIT_TESTS target_name)
  57.     IF (NOT TARGET tests)
  58.         ADD_CUSTOM_TARGET(${target_name})
  59.         INCLUDE_DIRECTORIES(${D}/tests)
  60.     ENDIF()
  61. ENDFUNCTION()
  62.  
  63. FUNCTION (ADD_TEST_TARGET target_name test_name)
  64.     ADD_EXECUTABLE(${test_name} EXCLUDE_FROM_ALL ${D}/tests/${test_name}.c ${TEST_SOURCES})
  65.     ADD_DEPENDENCIES(${target_name} ${test_name})
  66.     ADD_TEST(${test_name} ${test_name})
  67. ENDFUNCTION()
  68.  
  69. ##################################################
  70. # tests
  71. ##################################################
  72. SET(TEST_SOURCES server.c client.c ${COMMON_SOURCES})
  73. ENABLE_TESTING()
  74. INIT_TESTS(tests)
  75. ADD_TEST_TARGET(tests pkg_api)
  76. ADD_TEST_TARGET(tests ip_range)
  77. ADD_TEST_TARGET(tests pkg_test)
Advertisement
Add Comment
Please, Sign In to add comment