ecbuild_add_library

Add a library with a given list of source files.

ecbuild_add_library( TARGET <name>
                     SOURCES <source1> [<source2> ...]
                     [ SOURCES_GLOB <glob1> [<glob2> ...] ]
                     [ SOURCES_EXCLUDE_REGEX <regex1> [<regex2> ...] ]
                     [ TYPE SHARED|STATIC|MODULE|OBJECT|INTERFACE ]
                     [ OBJECTS <obj1> [<obj2> ...] ]
                     [ TEMPLATES <template1> [<template2> ...] ]
                     [ LIBS <library1> [<library2> ...] ]
                     [ PRIVATE_LIBS <library1> [<library2> ...] ]
                     [ PUBLIC_LIBS <library1> [<library2> ...] ]
                     [ INCLUDES <path1> [<path2> ...] ]
                     [ PRIVATE_INCLUDES <path1> [<path2> ...] ]
                     [ PUBLIC_INCLUDES <path1> [<path2> ...] ]
                     [ DEFINITIONS <definition1> [<definition2> ...] ]
                     [ PERSISTENT <file1> [<file2> ...] ]
                     [ GENERATED <file1> [<file2> ...] ]
                     [ DEPENDS <target1> [<target2> ...] ]
                     [ CONDITION <condition> ]
                     [ PROPERTIES <prop1> <val1> [<prop2> <val2> ...] ]
                     [ NOINSTALL ]
                     [ HEADER_DESTINATION <path> ]
                     [ INSTALL_HEADERS LISTED|ALL ]
                     [ INSTALL_HEADERS_LIST <header1> [<header2> ...] ]
                     [ INSTALL_HEADERS_REGEX <pattern> ]
                     [ VERSION <version> | AUTO_VERSION ]
                     [ SOVERSION <soversion> | AUTO_SOVERSION ]
                     [ CFLAGS <flag1> [<flag2> ...] ]
                     [ CXXFLAGS <flag1> [<flag2> ...] ]
                     [ FFLAGS <flag1> [<flag2> ...] ]
                     [ LINKER_LANGUAGE <lang> ]
                     [ OUTPUT_NAME <name> ] )

Options

TARGET : required
target name
SOURCES : required
list of source files
TYPE : optional

library type, one of:

SHARED:libraries are linked dynamically and loaded at runtime
STATIC:archives of object files for use when linking other targets.
MODULE:plugins that are not linked into other targets but may be loaded dynamically at runtime using dlopen-like functionality
OBJECT:files are just compiled into objects
INTERFACE:no direct build output, but can be used to aggregate headers, compilation flags and libraries
SOURCES_GLOB : optional
search pattern to find source files to compile (note: not recommend according to CMake guidelines) it is usually better to explicitly list the source files in the CMakeList.txt
SOURCES_EXCLUDE_REGEX : optional
search pattern to exclude source files from compilation, applies o the results of SOURCES_GLOB
OBJECTS : optional
list of object libraries to add to this target
TEMPLATES : optional
list of files specified as SOURCES which are not to be compiled separately (these are commonly template implementation files included in a header)
LIBS : (DEPRECATED) optional
list of libraries to link against (CMake targets or external libraries), behaves as PUBLIC_LIBS Please use target_link_libraries instead
PRIVATE_LIBS : optional
list of libraries to link against (CMake targets or external libraries), they will not be exported
PUBLIC_LIBS : optional
list of libraries to link against (CMake targets or external libraries), they will be exported
INCLUDES : (DEPRECATED) optional
list of paths to add to include directories, behaves as PUBLIC_INCLUDES Please use target_include_directories instead
PUBLIC_INCLUDES : (DEPRECATED) optional
list of paths to add to include directories which will be publicly exported to other projects Please use target_include_directories instead
PRIVATE_INCLUDES : (DEPRECATED) optional
list of paths to add to include directories which won’t be exported to other projects Please use target_include_directories instead
DEFINITIONS : (DEPRECATED) optional
list of definitions to add to preprocessor defines Please use target_compile_definitions instead
PERSISTENT : optional
list of persistent layer object files
GENERATED : optional
list of files to mark as generated (sets GENERATED source file property)
DEPENDS : optional
list of targets to be built before this target
CONDITION : optional
conditional expression which must evaluate to true for this target to be built (must be valid in a CMake if statement)
PROPERTIES : optional
custom properties to set on the target
NOINSTALL : optional
do not install the library
HEADER_DESTINATION
directory to install headers (if not specified, INSTALL_INCLUDE_DIR is used) Note: this directory will automatically be added to target_include_directories
INSTALL_HEADERS : optional

specify which header files to install:

LISTED:install header files listed as SOURCES
ALL:install all header files ending in .h, .hh, .hpp, .H
INSTALL_HEADERS_LIST : optional
list of extra headers to install
INSTALL_HEADERS_REGEX : optional
regular expression to match extra headers to install
VERSION : optional, AUTO_VERSION or LIBS_VERSION is used if not specified
build version of the library
AUTO_VERSION : optional, ignored if VERSION is specified
use MAJOR.MINOR package version as build version of the library
SOVERSION : optional, AUTO_SOVERSION or LIBS_SOVERSION is used if not specified
ABI version of the library
AUTO_SOVERSION : optional, ignored if SOVERSION is specified
use MAJOR package version as ABI version of the library
CFLAGS : optional
list of C compiler flags to use for all C source files
CXXFLAGS : optional
list of C++ compiler flags to use for all C++ source files
FFLAGS : optional
list of Fortran compiler flags to use for all Fortran source files
LINKER_LANGUAGE : optional
sets the LINKER_LANGUAGE property on the target
OUTPUT_NAME : optional
sets the OUTPUT_NAME property on the target