1
# CMake installation file
2
# Created 2008/10 during OpenMS retreat by CB && AB
6
########################################################
7
### entries meant to be configured using CMake cache ###
8
### - do NOT hardcode them here! ###
9
### - edit them within CMakeCache.txt using ccmake ###
10
########################################################
11
# CMAKE_FIND_ROOT_PATH
18
########################################################
19
### manual entries (edit this for new release) ###
20
########################################################
22
set(OPENMS_PACKAGE_VERSION_MAJOR "1")
23
set(OPENMS_PACKAGE_VERSION_MINOR "9")
24
set(OPENMS_PACKAGE_VERSION_PATCH "0")
26
########################################################
27
### end manual entries ###
28
########################################################
30
## Heart of the BUILD system : only edit when you know what you're doing (we don't)
31
## quick manual for most commands: http://www.cmake.org/cmake/help
32
## useful predefined variables: http://www.paraview.org/Wiki/CMake_Useful_Variables
34
## naming conventions:
36
## prefix a variable with 'CF_' if it is used to configure a file!
37
## e.g., CF_LibOpenMSExport
40
cmake_minimum_required(VERSION 2.6.3 FATAL_ERROR)
41
SET(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
42
set(CF_OPENMS_PACKAGE_VERSION "${OPENMS_PACKAGE_VERSION_MAJOR}.${OPENMS_PACKAGE_VERSION_MINOR}.${OPENMS_PACKAGE_VERSION_PATCH}" CACHE INTERNAL "OpenMS VERSION" FORCE)
44
## SOME MAC OS X STUFF
45
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
46
# force cmake > 2.8.1 to avoid bugs with OSX_DEPLOYMENT_TARGET
47
cmake_minimum_required(VERSION 2.8.1 FATAL_ERROR)
48
# due to some awkward updates of cmake in the 2.8.x series we need to add the following
49
find_library(CARBON NAMES Carbon)
51
set(APPLE_EXTRA_LIBS ${CARBON} ${OPENGL_LIBRARY})
55
## sanity check: sometimes CMAKE_SIZEOF_VOID_P just vanishes (when updating CMake).
56
if (NOT CMAKE_SIZEOF_VOID_P)
57
message(FATAL_ERROR "'CMAKE_SIZEOF_VOID_P' is undefined. Thus you should delete CMakeFiles (the directory) and the CMakeCache.txt and rerun CMake again! This is some weird CMake bug that seems to appear when updating the CMake version.")
60
if (CMAKE_SIZEOF_VOID_P MATCHES "8")
61
set(OPENMS_64BIT_ARCHITECTURE 1 CACHE INTERNAL "Architecture-bits")
62
message(STATUS "Architecture: 64 bit")
64
set(OPENMS_64BIT_ARCHITECTURE 0 CACHE INTERNAL "Architecture-bits")
65
message(STATUS "Architecture: 32 bit")
68
# some of our own macros (OPENMS_CHECKLIB, QT4_WRAP_UI_OWN, ...)
69
include (cmake/OpenMSBuildSystem_macros.cmake)
72
## Set default build type (if not set by user on command line)
73
if (NOT CMAKE_BUILD_TYPE)
74
set(CMAKE_BUILD_TYPE Release)
76
## force build type into the cache (needs to be set beforehand)
77
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE)
79
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
80
set(CF_OPENMS_ASSERTIONS 1)
82
set(CF_OPENMS_ASSERTIONS 0)
84
set(CF_OPENMS_ASSERTIONS ${CF_OPENMS_ASSERTIONS} CACHE INTERNAL "Enables debug messages (precondition and postconditions are enabled, a bit slower) - this is NOT changing any compiler flags!" FORCE)
87
########################################################
88
### compiler flags ###
89
########################################################
91
## Fill this with compile flags that external projects should use as well
92
## for OpenMS internal flags (not promoted to external compiler flags) append to CMAKE_CXX_FLAGS
93
set(CF_OPENMS_ADDCXX_FLAGS) ## see OpenMS/cmake/OpenMSConfig.cmake.in to see how its configured and used (i.e. as OPENMS_ADDCXX_FLAGS)
95
if (CMAKE_COMPILER_IS_GNUCXX)
97
# determine gcc version
98
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GNUCXX_VERSION)
99
string(REGEX MATCHALL "[0-9]+" GCC_VERSION_COMPONENTS ${GNUCXX_VERSION})
100
list(GET GCC_VERSION_COMPONENTS 0 GNUCXX_MAJOR_VERSION)
101
list(GET GCC_VERSION_COMPONENTS 1 GNUCXX_MINOR_VERSION)
103
add_definitions(-Wall -Wextra -Wno-non-virtual-dtor -Wno-long-long -Wno-variadic-macros)
104
if (NOT MT_ENABLE_CUDA) # necessary since CUDA contains non-pedantic code
105
add_definitions(--pedantic)
108
## Recommended setting for eclipse, see http://www.cmake.org/Wiki/CMake:Eclipse
109
if (CMAKE_GENERATOR STREQUAL "Eclipse CDT4 - Unix Makefiles")
110
add_definitions(-fmessage-length=0)
113
if (NOT OPENMS_64BIT_ARCHITECTURE AND ${GNUCXX_MAJOR_VERSION} MATCHES "4" AND ${GNUCXX_MINOR_VERSION} MATCHES "3")
114
add_definitions(-march=i486)
118
## do not use add_definitions
119
## add definitions also lands in stuff like RC_DEFINITION which tend to fail if you use
120
## Eclipse CDT 4 - NMAKE generator
121
## use set(CF_OPENMS_ADDCXX_FLAGS "${CF_OPENMS_ADDCXX_FLAGS} ...") instead
123
## disable dll-interface warning
124
set(CF_OPENMS_ADDCXX_FLAGS "${CF_OPENMS_ADDCXX_FLAGS} /wd4251 /wd4275")
126
## disable deprecated functions warning (e.g. for POSIX functions)
127
set(CF_OPENMS_ADDCXX_FLAGS "${CF_OPENMS_ADDCXX_FLAGS} /wd4996")
129
## disable explicit template instantiation request for partially defined classes
130
set(CF_OPENMS_ADDCXX_FLAGS "${CF_OPENMS_ADDCXX_FLAGS} /wd4661")
132
## disable warning: "decorated name length exceeded, name was truncated"
133
set(CF_OPENMS_ADDCXX_FLAGS "${CF_OPENMS_ADDCXX_FLAGS} /wd4503")
135
## don't warn about unchecked std::copy()
136
add_definitions(/D_SCL_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_WARNINGS /D_CRT_SECURE_NO_DEPRECATE)
138
## xerces bug workaround
139
add_definitions(/DOPENMS_XERCESDLL)
141
## FeatureFinder.obj is huge and won't compile in VS2008 debug otherwise:
142
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj")
144
## use multiple Cores (if available)
145
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
147
if (NOT OPENMS_64BIT_ARCHITECTURE)
148
## enable SSE1 on 32bit, on 64bit the compiler flag does not exist
149
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE")
151
elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
152
set(CMAKE_COMPILER_IS_CLANG true CACHE INTERNAL "Is CLang compiler (clang++)")
154
set(CMAKE_COMPILER_IS_INTELCXX true CACHE INTERNAL "Is Intel C++ compiler (icpc)")
157
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CF_OPENMS_ADDCXX_FLAGS}")
159
## platform dependent compiler flags:
160
include(CheckCXXCompilerFlag)
161
if (NOT WIN32) # we only want fPIC on non-windows systems (fPIC is implicitly true there)
162
CHECK_CXX_COMPILER_FLAG("-fPIC" WITH_FPIC)
164
add_definitions(-fPIC)
168
## -Wconversion flag for GCC
169
set(CXX_WARN_CONVERSION OFF CACHE BOOL "Enables warnings for type conversion problems (GCC only)")
170
if (CXX_WARN_CONVERSION)
171
if (CMAKE_COMPILER_IS_GNUCXX)
172
add_definitions(-Wconversion)
175
Message(STATUS "Compiler checks for conversion: ${CXX_WARN_CONVERSION}")
177
## STL-DEBUG (only for GCC and in debug mode)
178
set(STL_DEBUG OFF CACHE BOOL "[GCC only] Enable STL-DEBUG mode (very slow).")
180
if (CMAKE_COMPILER_IS_GNUCXX)
181
if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
183
add_definitions(/D_GLIBCXX_DEBUG)
184
Message(STATUS "STL debug mode: ${STL_DEBUG}")
186
Message(WARNING "STL debug mode is supported for OpenMS debug mode only")
189
Message(WARNING "STL debug mode is supported for compiler GCC only")
192
Message(STATUS "[GCC only] STL debug mode: ${STL_DEBUG}")
196
#########################################################
197
# Useful third party libs (optional) #
198
#########################################################
200
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake)
203
set(MT_ENABLE_CUDA OFF CACHE BOOL "Should CUDA support be enabled (version <= 2.1 currently supported).")
204
set(MT_CUDA_BUILD_TYPE Device CACHE STRING "Switch between Device and Emulation mode.")
206
MESSAGE(STATUS "NVIDIA CUDA: ${MT_CUDA_BUILD_TYPE} mode")
209
MESSAGE(STATUS "NVIDIA CUDA: ${MT_ENABLE_CUDA}")
212
if (FOUND_CUDART AND MT_ENABLE_CUDA) #CUDART and not CUDA!!!
213
add_definitions(/DOPENMS_HAS_CUDA)
214
MESSAGE (STATUS "Found CUDA header files in: ${FOUND_CUDA_NVCC_INCLUDE}") #Not CUDA_INCLUDE_DIR
215
MESSAGE (STATUS "Found CUDA library at: ${FOUND_CUDART}")
216
INCLUDE_DIRECTORIES(${FOUND_CUDA_NVCC_INCLUDE})
217
set (CUDA_NVCC_INCLUDE_ARGS ${CUDA_NVCC_INCLUDE_ARGS} -I ${PROJECT_BINARY_DIR}/include/)
221
set(MT_ENABLE_TBB OFF CACHE BOOL "Should Intel Threading Building Blocks support be enabled.")
222
set(MT_TBB_INCLUDE_DIR CACHE PATH "Intel Threading Building Blocks 'include' directory.")
223
set(MT_TBB_LIBRARY_DIR CACHE PATH "Intel Threading Building Blocks libraries directory.")
224
MESSAGE(STATUS "Intel TBB: ${MT_ENABLE_TBB}")
230
INCLUDE_DIRECTORIES(${MT_TBB_INCLUDE_DIR})
231
add_definitions(/DOPENMS_HAS_TBB)
235
set(MT_ENABLE_OPENMP ON CACHE BOOL "Should OpenMP support be enabled")
236
if (MT_ENABLE_OPENMP)
239
MESSAGE(STATUS "OPENMP: ${MT_ENABLE_OPENMP}")
242
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") ## do NOT use add_definitions() here, because RC.exe on windows will fail
244
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${OpenMP_CXX_FLAGS}")
248
########################################################
249
### external libs (contrib or system) ###
250
########################################################
252
include(cmake/OpenMSBuildSystem_externalLibs.cmake)
255
########################################################
256
### useful programms ###
257
########################################################
259
find_program(SVNVERSION_EXECUTABLE
261
PATHS "c:/programme/subversion/bin" "c:/program files/subversion/bin" ### additional search paths (along with $PATH)
262
DOC "svnversion executable which helps in determining the svn revision when building TOPP tools")
264
if ("${SVNVERSION_EXECUTABLE}" STREQUAL "SVNVERSION_EXECUTABLE-NOTFOUND")
265
message(STATUS "Info: The programm svnversion could not be found. SVN-revision information will not be available! Add the location of svnversion(.exe) to your PATH environment variable if you require SVN-revision.")
266
set(OPENMS_HAS_SVNVERSION OFF CACHE INTERNAL "SVNVersion(.exe) present?")
268
set(OPENMS_HAS_SVNVERSION ON CACHE INTERNAL "SVNVersion(.exe) present?")
271
set(SVN_REVISION_FILE "${PROJECT_BINARY_DIR}/include/OpenMS/openms_svn_revision.h")
275
########################################################
276
### configure config.h ###
277
########################################################
279
## this need to be set before config.h is configured!
280
set(CMAKE_INSTALL_PREFIX "" CACHE INTERNAL "This must be equal to INSTALL_PREFIX!" FORCE)
281
set(INSTALL_PREFIX "." CACHE PATH "Installation prefix for OpenMS and TOPP")
282
## are we building a shared or static lib?! (BOTH within the same BUILD-tree is NOT possible with OpenMS!!)
283
set(BUILD_SHARED_LIBS true)
285
include(cmake/OpenMSBuildSystem_configh.cmake)
287
## add configured files (used in 'cmake/includes.cmake')
288
set (OPENMS_CONFIGURED_FILES ${SVN_REVISION_FILE} ${CONFIGURED_CONFIG_H} ${CONFIGURED_OPENMS_PACKAGE_VERSION_H})
290
## Configures what is tested (DB-test, MS2-search engines)
291
include(cmake/OpenMSBuildSystem_testConfig.cmake)
295
########################################################
296
### Documentation ###
297
########################################################
299
include(cmake/OpenMSBuildSystem_doc.cmake)
303
########################################################
304
### BUILD the lib ###
305
########################################################
308
set(VALID_PACKAGE_TYPES "none" "rpm" "deb" "dmg")
309
set(PACKAGE_TYPE "none" CACHE STRING "Package type (internal): ${VALID_PACKAGE_TYPES}")
311
list(FIND VALID_PACKAGE_TYPES ${PACKAGE_TYPE} list_pos)
312
if( ${list_pos} EQUAL -1 )
313
message(STATUS "The PACKAGE_TYPE ${PACKAGE_TYPE} is invalid")
314
message(STATUS "Valid PACKAGE_TYPEs are:")
315
foreach( BT ${VALID_PACKAGE_TYPES} )
316
message(STATUS " * ${BT}")
318
message(FATAL_ERROR "Aborting ...")
322
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
323
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
324
set(OPENMS_BINARY_DIR "${PROJECT_BINARY_DIR}/bin")
325
set(OPENMS_WIN32_DLL_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
327
## big include file for headers and C files, which fills the OpenMS_sources variable
328
include (cmake/includes.cmake)
331
## use OpenMSd.dll in debug mode
332
SET(CMAKE_DEBUG_POSTFIX d)
335
## add library target
336
## warning: set BUILD_SHARED_LIBS to decide if library is shared or static (see above)! We need the BUILD_SHARED_LIBS flag to set declspec flags for MSVC!
337
if (FOUND_CUDART AND MT_ENABLE_CUDA) # we need both conditions due to possible present cached entries
338
CUDA_ADD_LIBRARY(OpenMS ${OpenMS_sources} ${Cuda_sources})
340
ADD_LIBRARY(OpenMS ${OpenMS_sources})
344
ADD_LIBRARY(OpenMS_GUI ${OpenMSVisual_sources})
346
set (GUI_lnk_flags "/FORCE:MULTIPLE /INCREMENTAL:NO /ignore:4006 /ignore:4088")
347
set_target_properties(OpenMS_GUI PROPERTIES LINK_FLAGS ${GUI_lnk_flags}) ## allow multiple definitions of symbols (e.g. from template instanciations or STL-derived classes)
350
## update the openms_svn_revision.h file before compiling OpenMS
351
add_custom_target(svn_revision_update ALL
352
COMMAND ${CMAKE_COMMAND} -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} -DSVN_REVISION_FILE=${SVN_REVISION_FILE} -DOPENMS_HAS_SVNVERSION=${OPENMS_HAS_SVNVERSION} -DSVNVERSION_EXECUTABLE=${SVNVERSION_EXECUTABLE}
353
-P ${CMAKE_CURRENT_SOURCE_DIR}/cmake/svnversion.cmake)
354
add_dependencies(OpenMS svn_revision_update)
355
set_source_files_properties(${SVN_REVISION_FILE} PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE)
357
## all the dependency libraries are linked into libOpenMS.so, except Qt and CUDA which are still dynamic
358
set(OPENMS_DEP_LIBRARIES ${CONTRIB_CBC} ${CONTRIB_GSL} ${CONTRIB_GSLCBLAS} ${DEP_LIBSVM_LIBRARY} ${CONTRIB_XERCESC} ${Boost_LIBRARIES} ${CONTRIB_BZIP2} ${CONTRIB_ZLIB} ${CONTRIB_GLPK})
360
list(APPEND OPENMS_DEP_LIBRARIES ${TBB_LIBRARIES})
363
list(APPEND OPENMS_DEP_LIBRARIES opengl32.lib)
366
target_link_libraries(OpenMS ${APPLE_EXTRA_LIBS} ${QT_LIBRARIES} ${OPENMS_DEP_LIBRARIES})
367
target_link_libraries(OpenMS_GUI OpenMS ${QT_LIBRARIES})
369
## OPENMS_LIBRARIES defines the libraries used by OpenMS; this should be used to link against executables
370
## somehow the link dependencies of cmake are broken such that when using POSTFIX names for libs the dependencies are not forwarded...
371
## we fix this by adding the dependencies of OpenMS directly to the executables as well.
372
set(OPENMS_LIBRARIES optimized OpenMS${CMAKE_RELEASE_POSTFIX} debug OpenMS${CMAKE_DEBUG_POSTFIX} ${QT_LIBRARIES})
374
list(APPEND OPENMS_LIBRARIES ${OPENMS_DEP_LIBRARIES})
377
## link libraries for GUI Tools
378
set(OPENMS_GUI_LIBRARIES optimized OpenMS_GUI${CMAKE_RELEASE_POSTFIX} debug OpenMS_GUI${CMAKE_DEBUG_POSTFIX} OpenMS ${QT_LIBRARIES})
380
## directory for OpenMS(d).lib (required for linking executables)
382
link_directories(${PROJECT_BINARY_DIR})
385
####### TOPP #########
386
set(TOPP_DIR source/APPLICATIONS/TOPP)
387
include(${TOPP_DIR}/executables.cmake)
388
foreach(i ${TOPP_executables})
389
add_executable(${i} ${TOPP_DIR}/${i}.C)
390
target_link_libraries(${i} ${OPENMS_LIBRARIES})
391
if (OPENMP_FOUND AND NOT MSVC)
392
set_target_properties(${i} PROPERTIES LINK_FLAGS ${OpenMP_CXX_FLAGS})
395
add_custom_target(TOPP)
396
add_dependencies(TOPP ${TOPP_executables})
399
set(UTILS_DIR source/APPLICATIONS/UTILS)
400
set(UTILS_executables)
401
include(${UTILS_DIR}/executables.cmake)
402
foreach(i ${UTILS_executables})
403
add_executable(${i} ${UTILS_DIR}/${i}.C)
404
target_link_libraries(${i} ${OPENMS_LIBRARIES})
406
add_custom_target(UTILS)
407
add_dependencies(UTILS ${UTILS_executables})
409
##### GUI tools ########
410
set(GUI_DIR source/VISUAL/APPLICATIONS/GUITOOLS)
411
include(${GUI_DIR}/executables.cmake)
412
foreach(i ${GUI_executables})
413
set(resource_file ${CMAKE_SOURCE_DIR}/${GUI_DIR}/${i}.rc)
414
set(resource_dir ${CMAKE_SOURCE_DIR}/${GUI_DIR}/${i}-resources/)
415
## add icons to TOPPView and INIFileEditor
416
if (MSVC AND EXISTS ${resource_file})
417
Message(STATUS "Setting resource file ${resource_file} for ${i}")
418
add_executable(${i} ${GUI_DIR}/${i}.C ${resource_file})
419
elseif(APPLE AND EXISTS ${resource_dir})
420
add_executable(${i} ${GUI_DIR}/${i}.C)
421
# extra work for pseudo-mac-bundle
422
# move prepared package to RUNTIME_OUTPUT
423
file(COPY "${PROJECT_SOURCE_DIR}/cmake/MacOSX/${i}-resources/${i}.app"
424
DESTINATION "${PROJECT_BINARY_DIR}/bin"
425
PATTERN ".svn" EXCLUDE
426
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
428
add_executable(${i} ${GUI_DIR}/${i}.C)
431
## append visual lib as dependency for GUI tools
432
target_link_libraries(${i} ${OPENMS_GUI_LIBRARIES})
433
if (OPENMP_FOUND AND NOT MSVC)
434
set_target_properties(${i} PROPERTIES LINK_FLAGS ${OpenMP_CXX_FLAGS})
437
add_custom_target(GUI)
438
add_dependencies(GUI ${GUI_executables})
440
## some regular TOPP/UTILS need the GUI lib
441
set(executables_withGUIlibDep ${TOPP_executables_with_GUIlib} ${UTILS_executables_with_GUIlib})
442
foreach(i ${executables_withGUIlibDep})
443
target_link_libraries(${i} ${OPENMS_GUI_LIBRARIES})
448
set(OpenMS_doc_executables)
449
include(doc/doxygen/parameters/executables.cmake)
450
foreach(i ${OpenMS_doc_executables})
451
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "doc/doxygen/parameters")
452
add_executable(${i} EXCLUDE_FROM_ALL doc/doxygen/parameters/${i}.C)
453
target_link_libraries(${i} ${OPENMS_GUI_LIBRARIES})
454
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin")
456
add_custom_target(doc_progs)
457
add_dependencies(doc_progs ${OpenMS_doc_executables} TOPP UTILS GUI)
460
if ("${PACKAGE_TYPE}" STREQUAL "none")
461
set(EXAMPLES_executables)
462
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin)
463
include(source/EXAMPLES/executables.cmake)
464
foreach(i ${EXAMPLES_executables})
465
add_executable(${i} source/EXAMPLES/${i}.C)
466
target_link_libraries(${i} ${OPENMS_GUI_LIBRARIES})
468
add_custom_target(Tutorials_build)
469
add_dependencies(Tutorials_build ${EXAMPLES_executables})
472
set(EXAMPLES_EXE_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$(OutDir))
474
set(EXAMPLES_EXE_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
478
## Create single target for each example, add it as a dependency to the main target
479
foreach(i ${EXAMPLES_executables})
480
list(APPEND EX_LIST COMMAND ${CMAKE_COMMAND} -E chdir ${PROJECT_SOURCE_DIR}/source/EXAMPLES ${EXAMPLES_EXE_DIR}/${i})
482
list(APPEND EX_LIST "echo all done")
483
add_custom_target(Tutorials_exec
484
COMMENT "Executes the examples"
486
separate_arguments(EX_LIST)
487
add_custom_command(TARGET Tutorials_exec
494
########################################################
496
########################################################
497
if("${PACKAGE_TYPE}" STREQUAL "none")
498
INCLUDE(Dart) ## for Nighlty Build log
499
add_subdirectory(source/TEST EXCLUDE_FROM_ALL) ## configure the Test project (but do not add it to OpenMS itself)
502
if(NOT CMAKE_COMPILER_IS_CLANG) ## cppcheck does not support clang output
503
find_package(cppcheck)
505
include( cmake/cppcheck.cmake )
510
########################################################
511
### verbose Post-build messages and help targets ###
512
########################################################
514
include(cmake/OpenMSBuildSystem_messages.cmake)
516
######################################################
517
#### build settings and configs for external code ####
518
######################################################
519
if ("${PACKAGE_TYPE}" STREQUAL "none")
520
## grep definitions (-D<XXX>) that were set using 'add_definitions()'
521
get_property(OPENMS_CMP_DEFS DIRECTORY . PROPERTY COMPILE_DEFINITIONS)
522
## convert to CXX flags
523
foreach(i ${OPENMS_CMP_DEFS})
524
set(CF_OPENMS_ADDCXX_FLAGS "${CF_OPENMS_ADDCXX_FLAGS} -D${i}")
526
## for add_definition commands (currently empty, but who knows...)
527
set(CF_OPENMS_ADD_DEFINITIONS)
528
## the filename for library settings (this file will be included in OpenMSConfig.cmake)
529
set(CF_LibOpenMSExport ${PROJECT_BINARY_DIR}/cmake/OpenMSLibraryExport.cmake)
531
## create code that allows to call find_package()
532
## (must come after the above code that sets the variables!)
533
get_directory_property(OPENMS_INCLUDE_DIRS INCLUDE_DIRECTORIES)
535
"${PROJECT_SOURCE_DIR}/cmake/OpenMSConfig.cmake.in"
536
"${PROJECT_BINARY_DIR}/cmake/OpenMSConfig.cmake"
540
## Create OpenMSLibraryExport.cmake:
541
## Note: export_build_settings and
542
## export_library_dependencies are deprecated and should not be used
543
if ("${INSTALL_PREFIX}" STREQUAL ".")
544
set(CVERSION "${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}")
545
if (CVERSION VERSION_LESS "2.8.0")
546
message(STATUS "Info: Cannot register OpenMS with CMake! For external code, set the path to OpenMS during find_package() manually.")
548
## register OpenMS with CMake so that it can be found easily
549
export(PACKAGE OpenMS)
552
export(TARGETS OpenMS FILE ${CF_LibOpenMSExport})
554
include(cmake/OpenMSBuildSystem_install.cmake)
558
######################################################
559
#### install/copy (cpack mainly) ####
560
######################################################
561
## general definitions
562
set(CPACK_PACKAGE_NAME "OpenMS")
563
set(CPACK_PACKAGE_VENDOR "OpenMS.de")
564
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "OpenMS - A framework for mass spectrometry")
565
set(CPACK_PACKAGE_VERSION "${OPENMS_PACKAGE_VERSION_MAJOR}.${OPENMS_PACKAGE_VERSION_MINOR}.${OPENMS_PACKAGE_VERSION_PATCH}")
566
set(CPACK_PACKAGE_VERSION_MAJOR "${OPENMS_PACKAGE_VERSION_MAJOR}")
567
set(CPACK_PACKAGE_VERSION_MINOR "${OPENMS_PACKAGE_VERSION_MINOR}")
568
set(CPACK_PACKAGE_VERSION_PATCH "${OPENMS_PACKAGE_VERSION_PATCH}")
569
set(CPACK_PACKAGE_INSTALL_DIRECTORY "OpenMS-${CPACK_PACKAGE_VERSION}")
570
set(CPACK_PACKAGE_DESCRIPTION_FILE ${PROJECT_SOURCE_DIR}/cmake/OpenMSPackageDescriptionFile.cmake)
571
set(CPACK_RESOURCE_FILE_LICENSE ${PROJECT_SOURCE_DIR}/License.txt)
572
set(CPACK_RESOURCE_FILE_WELCOME ${PROJECT_SOURCE_DIR}/cmake/OpenMSPackageResourceWelcomeFile.txt)
573
set(CPACK_RESOURCE_FILE_README ${PROJECT_SOURCE_DIR}/cmake/OpenMSPackageResourceReadme.txt)
575
# install routines for MacOSX
576
if("${PACKAGE_TYPE}" STREQUAL "dmg")
577
include(cmake/package_dragndrop_dmg.cmake)
580
if("${PACKAGE_TYPE}" STREQUAL "rpm")
581
include(cmake/package_rpm.cmake)
584
if("${PACKAGE_TYPE}" STREQUAL "deb")
585
include(cmake/package_deb.cmake)