CMakeLists.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. project(ubxproto C)
  2. cmake_minimum_required (VERSION 2.8)
  3. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
  4. set(UBXPROTO_VERSION 0.14.0)
  5. set(INSTALL_LIB_DIR ${INSTALL_LIB_DIR} CACHE PATH "Installation directory for libraries")
  6. set(INSTALL_INCLUDE_DIR "${INSTALL_INCLUDE_DIR}/ubxproto")
  7. #Define include paths
  8. include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR})
  9. #Set sources
  10. set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ubx.c)
  11. #Compile object files for both shared and static libraries
  12. add_library(ubxprotoobjects OBJECT ${SOURCES})
  13. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
  14. set(PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/ubxaid.h
  15. ${CMAKE_CURRENT_SOURCE_DIR}/ubxcfg.h
  16. ${CMAKE_CURRENT_SOURCE_DIR}/ubx.h
  17. ${CMAKE_CURRENT_SOURCE_DIR}/ubxlog.h
  18. ${CMAKE_CURRENT_SOURCE_DIR}/ubxmessage.h
  19. ${CMAKE_CURRENT_SOURCE_DIR}/ubxmon.h
  20. ${CMAKE_CURRENT_SOURCE_DIR}/ubxrxm.h
  21. ${CMAKE_CURRENT_SOURCE_DIR}/ubxutils.h)
  22. #Static library target
  23. add_library(ubxprotostatic STATIC $<TARGET_OBJECTS:ubxprotoobjects>)
  24. set_target_properties(ubxprotostatic PROPERTIES OUTPUT_NAME ubxproto)
  25. set_target_properties(ubxprotostatic PROPERTIES LINKER_LANGUAGE C)
  26. set_target_properties(ubxprotostatic PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER}")
  27. set(PROJECT_TARGETS ubxprotostatic)
  28. #Shared library target
  29. add_library(ubxprotoshared SHARED $<TARGET_OBJECTS:ubxprotoobjects>)
  30. set_target_properties(ubxprotoshared PROPERTIES LINKER_LANGUAGE C)
  31. set_target_properties(ubxprotoshared PROPERTIES OUTPUT_NAME ubxproto)
  32. set_target_properties(ubxprotoshared PROPERTIES SOVERSION ${UBXPROTO_VERSION})
  33. set(PROJECT_TARGETS ${PROJECT_TARGETS} ubxprotoshared)
  34. set(PROJECT_LIBS ubxproto)
  35. find_package(Doxygen)
  36. if(DOXYGEN_FOUND)
  37. set(DOXYGEN_INPUT ${CMAKE_SOURCE_DIR})
  38. set(DOXYGEN_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/doc")
  39. add_custom_target(doc COMMAND ${DOXYGEN_EXECUTABLE} ubxproto.doxyconf
  40. WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
  41. COMMENT "Generating doxygen documenation")
  42. else(DOXYGEN_FOUND)
  43. message(STATUS "WARNING: Doxygen not found - Reference manual will not be created")
  44. endif(DOXYGEN_FOUND)
  45. install(TARGETS ${PROJECT_TARGETS}
  46. EXPORT ${PROJECT_NAME}Targets
  47. ARCHIVE DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_LIB_DIR}" COMPONENT staticlib
  48. LIBRARY DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_LIB_DIR}" COMPONENT sharedlib
  49. PUBLIC_HEADER DESTINATION "${SYSROOT}/${INSTALL_INCLUDE_DIR}"
  50. COMPONENT dev
  51. )
  52. install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc" DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_DOC_DIR}/${PROJECT_NAME}")
  53. #Generate cmake find library addtion
  54. include(CMakeGen)