Newer
Older
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)
PROJECT(json-editor)
#set version
SET(MAJOR_VERSION 1)
SET(MINOR_VERSION 0)
SET(PATCH_VERSION 0)
#EXEC_PROGRAM("git" ${CMAKE_CURRENT_SOURCE_DIR} ARGS "log HEAD --format=format:%H -1" OUTPUT_VARIABLE GIT_SHA1)
#ADD_DEFINITIONS(-D_PROJECT_NAME="${PROJECT_NAME}")
#ADD_DEFINITIONS(-D_PROJECT_VERSION="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}")
#ADD_DEFINITIONS(-D_GIT_SHA1="${GIT_SHA1}")
#set compile flags
SET(DEFAULT_FLAGS "--std=gnu99")
SET(RELEASE_FLAGS "-Wno-long-long -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common -Wsign-compare -Wunused-result")
include(GNUInstallDirs)
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${DEFAULT_FLAGS} -Wall")
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Os ${DEFAULT_FLAGS} ${RELEASE_FLAGS}")
SET(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} ${DEFAULT_FLAGS} ${RELEASE_FLAGS}")
SET(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} ${DEFAULT_FLAGS} ${RELEASE_FLAGS}")
#INCLUDE(LogOptions.cmake)
#create executable
FILE(GLOB SOURCES "*.c" "*.h")
set(PUBLIC_HEADERS
${PROJECT_SOURCE_DIR}/api.h
)
#ADD_EXECUTABLE(${PROJECT_NAME} ${SOURCES})
ADD_LIBRARY(${PROJECT_NAME} SHARED ${SOURCES})
#link libraries
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules")
find_library(JSON_LIBRARIES NAMES json-c)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${JSON_LIBRARIES})
#testing
IF(CMAKE_BUILD_TYPE STREQUAL Debug)
OPTION(ENABLE_BUILD_TESTS "Build tests" ON)
# OPTION(ENABLE_VALGRIND_TESTS "Build tests with valgrind" ON)
ELSE()
OPTION(ENABLE_BUILD_TESTS "Build tests" OFF)
# OPTION(ENABLE_VALGRIND_TESTS "Build tests with valgrind" OFF)
ENDIF()
IF(ENABLE_BUILD_TESTS)
FIND_PACKAGE(CMocka)
if(CMOCKA_FOUND)
#ADD_LIBRARY(${PROJECT_NAME}-api SHARED ${SOURCES})
MESSAGE("-- Building tests")
ENABLE_TESTING()
ADD_SUBDIRECTORY(test)
ELSE(CMOCKA_FOUND)
MESSAGE("-- CMocka not found")
ENDIF(CMOCKA_FOUND)
ENDIF(ENABLE_BUILD_TESTS)
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
#install
#INSTALL(TARGETS imonitor RUNTIME DESTINATION bin)
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/)