cmock_build.cmake 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Macro utility to clone the CMock submodule.
  2. macro( clone_cmock )
  3. find_package( Git REQUIRED )
  4. message( "Cloning submodule CMock." )
  5. execute_process( COMMAND rm -rf ${CMOCK_DIR}
  6. COMMAND ${GIT_EXECUTABLE} submodule update --checkout --init --recursive ${CMOCK_DIR}
  7. WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
  8. RESULT_VARIABLE CMOCK_CLONE_RESULT )
  9. if( NOT ${CMOCK_CLONE_RESULT} STREQUAL "0" )
  10. message( FATAL_ERROR "Failed to clone CMock submodule." )
  11. endif()
  12. endmacro()
  13. # Macro utility to add library targets for Unity and CMock to build configuration.
  14. macro( add_cmock_targets )
  15. # Build Configuration for CMock and Unity libraries.
  16. list( APPEND CMOCK_INCLUDE_DIRS
  17. "${CMOCK_DIR}/vendor/unity/src/"
  18. "${CMOCK_DIR}/vendor/unity/extras/fixture/src"
  19. "${CMOCK_DIR}/vendor/unity/extras/memory/src"
  20. "${CMOCK_DIR}/src"
  21. )
  22. add_library(cmock STATIC
  23. "${CMOCK_DIR}/src/cmock.c"
  24. )
  25. set_target_properties(cmock PROPERTIES
  26. ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
  27. POSITION_INDEPENDENT_CODE ON
  28. COMPILE_FLAGS "-Og"
  29. )
  30. target_include_directories(cmock PUBLIC
  31. ${CMOCK_DIR}/src
  32. ${CMOCK_DIR}/vendor/unity/src/
  33. ${CMOCK_DIR}/examples
  34. ${CMOCK_INCLUDE_DIRS}
  35. )
  36. add_library(unity STATIC
  37. "${CMOCK_DIR}/vendor/unity/src/unity.c"
  38. "${CMOCK_DIR}/vendor/unity/extras/fixture/src/unity_fixture.c"
  39. "${CMOCK_DIR}/vendor/unity/extras/memory/src/unity_memory.c"
  40. )
  41. set_target_properties(unity PROPERTIES
  42. ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib
  43. POSITION_INDEPENDENT_CODE ON
  44. )
  45. target_include_directories(unity PUBLIC
  46. ${CMOCK_INCLUDE_DIRS}
  47. )
  48. target_link_libraries(cmock unity)
  49. endmacro()