Skip to content
Snippets Groups Projects
CMakeLists.txt 2.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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
    )
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    #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)
    
    Jakob Olsson's avatar
    Jakob Olsson committed
    		#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/)