-
Dietrich Rothe authored
This provides ChimeraTK::<project-name> as cmake imported target. Variables <project_name>_INCLUDE_DIRS, <project_name>LIBRARY_DIRS, <project_name>_LIBRARIES, <project_name>_CXX_FLAGS, <project_name>_LINKER_FLAGS are provided for compatibility but are generated from cmake-exports where possible and cmake imported targets should be preferred. * provide function for option array conversion to be used with target_compile_options etc + FindPackage results, where findPackage results are of incorrect/old format * FindDOOCS: - DOOCS components as imported targets - clean up no longer needed tweaks - add timinglib as component - make use of log levels and respect QUIET argument * add_dependency: fail on wrong add_dependency usage this was unseen since it worked in most cases but in general does not in particular was causing trouble with imports from cppext second arg must be version number * pkgconfig exports - generated from cmake-exports - make linker flags come before libs, order is required e.g. for --no-as-needed flag - remove duplicates in output * FindGccAtomic - do not put absolute lib path in output since it was causing trouble with yocto builds. Should be in system lib paths anyway. Also, make GccAtomic variable output name more consistent.
Dietrich Rothe authoredThis provides ChimeraTK::<project-name> as cmake imported target. Variables <project_name>_INCLUDE_DIRS, <project_name>LIBRARY_DIRS, <project_name>_LIBRARIES, <project_name>_CXX_FLAGS, <project_name>_LINKER_FLAGS are provided for compatibility but are generated from cmake-exports where possible and cmake imported targets should be preferred. * provide function for option array conversion to be used with target_compile_options etc + FindPackage results, where findPackage results are of incorrect/old format * FindDOOCS: - DOOCS components as imported targets - clean up no longer needed tweaks - add timinglib as component - make use of log levels and respect QUIET argument * add_dependency: fail on wrong add_dependency usage this was unseen since it worked in most cases but in general does not in particular was causing trouble with imports from cppext second arg must be version number * pkgconfig exports - generated from cmake-exports - make linker flags come before libs, order is required e.g. for --no-as-needed flag - remove duplicates in output * FindGccAtomic - do not put absolute lib path in output since it was causing trouble with yocto builds. Should be in system lib paths anyway. Also, make GccAtomic variable output name more consistent.
PROJECT_NAMEConfig.cmake.in.in 5.22 KiB
#######################################################################################################################
#
# cmake module for finding @PROJECT_NAME@
#
# returns:
# @PROJECT_NAME@_FOUND : true or false, depending on whether the package was found
# @PROJECT_NAME@_VERSION : the package version
# @PROJECT_NAME@_INCLUDE_DIRS : path to the include directory
# @PROJECT_NAME@_LIBRARY_DIRS : path to the library directory
# @PROJECT_NAME@_LIBRARIES : libraries the depending project needs to link against
# @PROJECT_NAME@_CXX_FLAGS : additional C++ compiler flags
# @PROJECT_NAME@_LINKER_FLAGS : additional linker flags
#
# Note for exporting project:
# If @PROJECT_NAME@ sets PROVIDES_EXPORTED_TARGETS, we also generate target EXPORTS. In this case the its CMakeLists.txt
# must also have
# install(TARGETS EXPORT ${PROJECT_NAME}Targets)
# before. The target will be named ChimeraTK::${PROJECT_NAME} .
# We keep above mentioned return variables for compatibility, but finally, when all projects use imported targets,
# all execept _FOUND and _VERSION will be superfluous.
#
# @author Martin Killenberg, DESY
#
#######################################################################################################################
#######################################################################################################################
#
# IMPORTANT NOTE:
#
# DO NOT MODIFY THIS FILE inside a project. Instead update the project-template repository and pull the change from
# there. Make sure to keep the file generic, since it will be used by other projects, too.
#
# If you have modified this file inside a project despite this warning, make sure to cherry-pick all your changes
# into the project-template repository immediately.
#
#######################################################################################################################
# In case of packages with components, loading dependencies can cause trouble if required component list are differ.
# E.g. if Boost is required from the project, and also required from the dependency, but with less components,
# and the dependency is resolved later, then Boost_LIBRARIES content will be different than expected.
# To protect against this, save state and restore it later.
# Since imported targets are never unloaded, the loaded dependency should still work.
set(Boost_LIBRARIES_savedState_@PROJECT_NAME@ ${Boost_LIBRARIES})
# this code loads public dependencies
@@PROJECT_NAME@_PUBLIC_DEPENDENCIES_L@
set(Boost_LIBRARIES ${Boost_LIBRARIES_savedState_@PROJECT_NAME@})
# Since this file is already part of the installation to be found, the configuration can be hard-coded at
# installation time
set(@PROJECT_NAME@_VERSION "@@PROJECT_NAME@_SOVERSION@")
set(@PROJECT_NAME@_PREFIX "@CMAKE_INSTALL_PREFIX@")
# Use a macro provided by CMake to check if all the listed arguments are valid and set @PROJECT_NAME@_FOUND accordingly.
# This is mainly important to check the version.
include(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(@PROJECT_NAME@ REQUIRED_VARS @PROJECT_NAME@_PREFIX VERSION_VAR @PROJECT_NAME@_VERSION FOUND_VAR @PROJECT_NAME@_FOUND)
# switch for exported target. We don't do this automatically, because the calling CMakeLists.txt
# first must be edited so that it properly defines PUBLIC set of compile and link options
if(@PROVIDES_EXPORTED_TARGETS@)
@PACKAGE_INIT@
# include cmake's auto-generated exports file
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
# this will set ${PROJECT_NAME}_FOUND if required components are missing
check_required_components(@PROJECT_NAME@)
else()
if(@@PROJECT_NAME@_HAS_LIBRARY@)
# has true compiled library as output
# The library itself must be "searched" using the FIND_LIBRARY command in the known install directory, to set
# the variable properly
FIND_LIBRARY(@PROJECT_NAME@_LIBRARY @PROJECT_NAME@
@CMAKE_INSTALL_PREFIX@/lib
NO_DEFAULT_PATH
)
if(NOT @PROJECT_NAME@_LIBRARY)
set(@PROJECT_NAME@_FOUND FALSE)
message(SEND_ERROR "FIND_LIBRARY returned error: ${@PROJECT_NAME@_LIBRARY}")
else()
# prepend it to lib list
set(@PROJECT_NAME@_LIBRARIES ${@PROJECT_NAME@_LIBRARY} ${@PROJECT_NAME@_LIBRARIES})
endif()
endif()
endif()
# Compatibility layer definitions.
# The following variables are generated automatically for projects supporting cmake-exports.
# Otherwise, values must be provided as inputs to create_cmake_config_files.
# The types of generated lists are precisely as in old DeviceAccess config
# inc dirs, lib dirs, libs are ";" separated
# cxx flags, link flags are " " separated
# ";" separated
set(@PROJECT_NAME@_INCLUDE_DIRS @@PROJECT_NAME@_INCLUDE_DIRS@)
# ";" separated
set(@PROJECT_NAME@_LIBRARY_DIRS @@PROJECT_NAME@_LIBRARY_DIRS@)
# ";" separated
set(@PROJECT_NAME@_LIBRARIES ${@PROJECT_NAME@_LIBRARIES} @@PROJECT_NAME@_LIBRARIES@)
# " " separated
set(@PROJECT_NAME@_CXX_FLAGS "@@PROJECT_NAME@_CXX_FLAGS@")
# " " separated
set(@PROJECT_NAME@_LINKER_FLAGS "@@PROJECT_NAME@_LINKER_FLAGS@ @@PROJECT_NAME@_LINK_FLAGS@")
# " " separated
set(@PROJECT_NAME@_LINK_FLAGS "@@PROJECT_NAME@_LINKER_FLAGS@ @@PROJECT_NAME@_LINK_FLAGS@")