-
Langella Olivier authoredLangella Olivier authored
CMakeLists.txt 6.53 KiB
# CMake script for C++ X!TandemPipeline
# Author: Olivier Langella
# Created: 05/06/2015
# Global parameters
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(xtpcpp CXX)
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)
IF(NOT CMAKE_BUILD_TYPE)
# SET(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
# "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
# FORCE)
SET(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
FORCE)
ENDIF(NOT CMAKE_BUILD_TYPE)
MESSAGE("CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE}")
IF(CMAKE_BUILD_TYPE MATCHES "Release")
MESSAGE("compiling as release version")
ADD_DEFINITIONS("-DQT_NO_DEBUG_OUTPUT")
ENDIF( CMAKE_BUILD_TYPE MATCHES "Release" )
IF(CMAKE_BUILD_TYPE MATCHES "Debug")
MESSAGE("compiling as debug version")
ENDIF( CMAKE_BUILD_TYPE MATCHES "Debug" )
IF(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
MESSAGE("compiling as release with debug info version")
ENDIF( CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo" )
#SET(CMAKE_CXX_FLAGS "-Wall -Weffc++ -Wshadow -Wconversion")
#set(CMAKE_CXX_STANDARD 14)
if (CMAKE_VERSION VERSION_LESS "3.1")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
set (CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
endif ()
else ()
set (CMAKE_CXX_STANDARD 11)
endif ()
#depending on libpappsomspp version :
SET(LIBPAPPSOMSPP_VERSION "0.3.3-3")
configure_file (${CMAKE_SOURCE_DIR}/debian/control.cmake ${CMAKE_SOURCE_DIR}/debian/control @ONLY)
SET(SOFTWARE_NAME "XTPcpp")
SET(XTPCPP_VERSION_MAJOR "0")
SET(XTPCPP_VERSION_MINOR "2")
SET(XTPCPP_VERSION_PATCH "12")
SET(XTPCPP_VERSION "${XTPCPP_VERSION_MAJOR}.${XTPCPP_VERSION_MINOR}.${XTPCPP_VERSION_PATCH}")
# Set the CMAKE_PREFIX_PATH for the find_library fonction when using non
# standard install location
IF(CMAKE_INSTALL_PREFIX)
SET(CMAKE_PREFIX_PATH "${CMAKE_INSTALL_PREFIX}" ${CMAKE_PREFIX_PATH})
ENDIF(CMAKE_INSTALL_PREFIX)
# Subdirectories
ADD_SUBDIRECTORY(src)
# Doxygen
FIND_PACKAGE(Doxygen)
IF (DOXYGEN_FOUND)
ADD_CUSTOM_TARGET (apidoc cp Doxyfile ${CMAKE_BINARY_DIR}/Doxyfile-build
COMMAND echo "OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}" >> ${CMAKE_BINARY_DIR}/Doxyfile-build
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile-build
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
ADD_CUSTOM_TARGET (apidoc-stable cp Doxyfile ${CMAKE_BINARY_DIR}/Doxyfile-stable
COMMAND echo "OUTPUT_DIRECTORY=${CMAKE_BINARY_DIR}" >> ${CMAKE_BINARY_DIR}/Doxyfile-stable
COMMAND echo "HTML_HEADER=header.html" >> ${CMAKE_BINARY_DIR}/Doxyfile-stable
COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile-stable
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
ENDIF (DOXYGEN_FOUND)
# Packager
SET(CPACK_PACKAGE_NAME "xtpcpp")
SET(CPACK_PACKAGE_VENDOR "PAPPSO Development Team")
SET(CPACK_PACKAGE_VERSION "${XTPCPP_VERSION}")
SET(CPACK_PACKAGE_VERSION_MAJOR "${XTPCPP_VERSION_MAJOR}")
SET(CPACK_PACKAGE_VERSION_MINOR "${XTPCPP_VERSION_MINOR}")
SET(CPACK_PACKAGE_VERSION_PATCH "${XTPCPP_VERSION_PATCH}")
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "protein inference tool")
SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/COPYING")
SET(CPACK_RESOURCE_FILE_AUTHORS "${CMAKE_SOURCE_DIR}/AUTHORS")
SET(CPACK_RESOURCE_FILE_INSTALL "${CMAKE_SOURCE_DIR}/INSTALL")
SET(CPACK_SOURCE_GENERATOR "TGZ")
SET(CPACK_SOURCE_IGNORE_FILES
"CMakeFiles"
"Makefile"
"_CPack_Packages"
"CMakeCache.txt"
".*\\\\.git"
".*\\\\.gz"
".*\\\\.deb"
".*\\\\.rpm"
".*\\\\.dmg"
".*\\\\.xpip"
".*\\\\..*\\\\.swp"
"src/\\\\..*"
"src/libbpp*"
"debian/tmp"
"debian/libbpp.*/"
"debian/libbpp.*\\\\.so.*"
"debian/libbpp.*\\\\.a"
"debian/libbpp.*\\\\.substvars"
"debian/libbpp.*\\\\.debhelper"
"debian/debhelper\\\\.log"
"build/"
"cbuild/"
"Core.tag"
"Testing"
"build-stamp"
"install_manifest.txt"
"DartConfiguration.tcl"
${CPACK_SOURCE_IGNORE_FILES}
)
#dch -Djessie "message"
#cmake ..
#make deb
# scp xtpcpp* proteus.moulon.inra.fr:/var/www/apt/incoming
# reprepro -Vb /var/www/apt processincoming default
#
# debuild -S -sa
# dput -f olivier-langella *changes
IF (MACOS)
SET(CPACK_GENERATOR "Bundle")
ENDIF()
SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
SET(CPACK_DEBSOURCE_PACKAGE_FILE_NAME "lib${CMAKE_PROJECT_NAME}_${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}.orig")
INCLUDE(CPack)
#This adds the 'dist' target
ADD_CUSTOM_TARGET(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
# 'clean' is not (yet) a first class target. However, we need to clean the directories before building the sources:
IF("${CMAKE_GENERATOR}" MATCHES "Make")
ADD_CUSTOM_TARGET(make_clean
COMMAND ${CMAKE_MAKE_PROGRAM} clean
WORKING_DIRECTORY ${CMAKE_CURRENT_DIR}
)
ADD_DEPENDENCIES(dist make_clean)
ENDIF()
IF (UNIX)
#This creates deb packages:
add_custom_target(targz
cpack -G TGZ --config CPackSourceConfig.cmake && tar xvfz ${CPACK_PACKAGE_NAME}-${XTPCPP_VERSION}.tar.gz
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Creating .tar.gz" VERBATIM
)
add_custom_target(deb
cd ${CPACK_PACKAGE_NAME}-${XTPCPP_VERSION} && dpkg-buildpackage
DEPENDS targz
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Creating Debian package" VERBATIM
)
file(GLOB changesdebs "${CMAKE_BINARY_DIR}/${CPACK_PACKAGE_NAME}_*.dsc")
foreach(libfile ${changesdebs})
SET(changesdeb "${libfile}")
endforeach(libfile)
message ("changes debian file : ${changesdeb}")
#lintian -IEi --pedantic tandem-mass_2013.06.15-1_amd64.changes
add_custom_target(lintian
lintian -IEi --pedantic ${changesdeb}
DEPENDS deb
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "lintian check" VERBATIM
)
ENDIF()
SET(CTEST_UPDATE_TYPE git)
SET(UPDATE_COMMAND "git")
SET(UPDATE_OPTIONS "")
#ENABLE_TESTING()
#INCLUDE(CTest)
#IF (BUILD_TESTING)
# ADD_SUBDIRECTORY(test)
#ENDIF(BUILD_TESTING)
configure_file (${CMAKE_SOURCE_DIR}/templates/share/applications/xtpcpp.desktop.cmake ${CMAKE_BINARY_DIR}/templates/share/applications/xtpcpp.desktop)
INSTALL(FILES ${CMAKE_BINARY_DIR}/templates/share/applications/xtpcpp.desktop DESTINATION share/applications)
INSTALL(PROGRAMS ${CMAKE_BINARY_DIR}/src/xtpcpp DESTINATION bin)
configure_file(${CMAKE_SOURCE_DIR}/src/resources/xtandempipeline_icon.svg ${CMAKE_BINARY_DIR}/src/resources/xtpcpp.svg COPYONLY)
INSTALL(FILES ${CMAKE_BINARY_DIR}/src/resources/xtpcpp.svg DESTINATION share/icons/hicolor/scalable/apps)