123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- project(ubxproto C)
- cmake_minimum_required (VERSION 2.8)
- set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
- set(UBXPROTO_VERSION 0.14.0)
- set(INSTALL_LIB_DIR ${INSTALL_LIB_DIR} CACHE PATH "Installation directory for libraries")
- set(INSTALL_INCLUDE_DIR "${INSTALL_INCLUDE_DIR}/ubxproto")
- #Define include paths
- include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR})
- #Set sources
- set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/ubx.c)
- #Compile object files for both shared and static libraries
- add_library(ubxprotoobjects OBJECT ${SOURCES})
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
- set(PUBLIC_HEADER ${CMAKE_CURRENT_SOURCE_DIR}/ubxaid.h
- ${CMAKE_CURRENT_SOURCE_DIR}/ubxcfg.h
- ${CMAKE_CURRENT_SOURCE_DIR}/ubx.h
- ${CMAKE_CURRENT_SOURCE_DIR}/ubxlog.h
- ${CMAKE_CURRENT_SOURCE_DIR}/ubxmessage.h
- ${CMAKE_CURRENT_SOURCE_DIR}/ubxmon.h
- ${CMAKE_CURRENT_SOURCE_DIR}/ubxrxm.h
- ${CMAKE_CURRENT_SOURCE_DIR}/ubxutils.h)
- #Static library target
- add_library(ubxprotostatic STATIC $<TARGET_OBJECTS:ubxprotoobjects>)
- set_target_properties(ubxprotostatic PROPERTIES OUTPUT_NAME ubxproto)
- set_target_properties(ubxprotostatic PROPERTIES LINKER_LANGUAGE C)
- set_target_properties(ubxprotostatic PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADER}")
- set(PROJECT_TARGETS ubxprotostatic)
- #Shared library target
- add_library(ubxprotoshared SHARED $<TARGET_OBJECTS:ubxprotoobjects>)
- set_target_properties(ubxprotoshared PROPERTIES LINKER_LANGUAGE C)
- set_target_properties(ubxprotoshared PROPERTIES OUTPUT_NAME ubxproto)
- set_target_properties(ubxprotoshared PROPERTIES SOVERSION ${UBXPROTO_VERSION})
- set(PROJECT_TARGETS ${PROJECT_TARGETS} ubxprotoshared)
- set(PROJECT_LIBS ubxproto)
- find_package(Doxygen)
- if(DOXYGEN_FOUND)
- set(DOXYGEN_INPUT ${CMAKE_SOURCE_DIR})
- set(DOXYGEN_OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/doc")
- add_custom_target(doc COMMAND ${DOXYGEN_EXECUTABLE} ubxproto.doxyconf
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- COMMENT "Generating doxygen documenation")
- else(DOXYGEN_FOUND)
- message(STATUS "WARNING: Doxygen not found - Reference manual will not be created")
- endif(DOXYGEN_FOUND)
- install(TARGETS ${PROJECT_TARGETS}
- EXPORT ${PROJECT_NAME}Targets
- ARCHIVE DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_LIB_DIR}" COMPONENT staticlib
- LIBRARY DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_LIB_DIR}" COMPONENT sharedlib
- PUBLIC_HEADER DESTINATION "${SYSROOT}/${INSTALL_INCLUDE_DIR}"
- COMPONENT dev
- )
- install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/doc" DESTINATION "${SYSROOT}/${PREFIX}/${INSTALL_DOC_DIR}/${PROJECT_NAME}")
- #Generate cmake find library addtion
- include(CMakeGen)
|