| ################################################################################################ | |
| # Helper function to get all list items that begin with given prefix | |
| # Usage: | |
| # caffe_get_items_with_prefix(<prefix> <list_variable> <output_variable>) | |
| function(caffe_get_items_with_prefix prefix list_variable output_variable) | |
| set(__result "") | |
| foreach(__e ${${list_variable}}) | |
| if(__e MATCHES "^${prefix}.*") | |
| list(APPEND __result ${__e}) | |
| endif() | |
| endforeach() | |
| set(${output_variable} ${__result} PARENT_SCOPE) | |
| endfunction() | |
| ################################################################################################ | |
| # Function for generation Caffe build- and install- tree export config files | |
| # Usage: | |
| # caffe_generate_export_configs() | |
| function(caffe_generate_export_configs) | |
| set(install_cmake_suffix "share/Caffe") | |
| if(NOT HAVE_CUDA) | |
| set(HAVE_CUDA FALSE) | |
| endif() | |
| set(HDF5_IMPORTED OFF) | |
| foreach(_lib ${HDF5_LIBRARIES} ${HDF5_HL_LIBRARIES}) | |
| if(TARGET ${_lib}) | |
| set(HDF5_IMPORTED ON) | |
| endif() | |
| endforeach() | |
| # This code is taken from https://github.com/sh1r0/caffe-android-lib | |
| if(USE_HDF5) | |
| list(APPEND Caffe_DEFINITIONS -DUSE_HDF5) | |
| endif() | |
| if(NOT HAVE_CUDNN) | |
| set(HAVE_CUDNN FALSE) | |
| endif() | |
| # ---[ Configure build-tree CaffeConfig.cmake file ]--- | |
| configure_file("cmake/Templates/CaffeConfig.cmake.in" "${PROJECT_BINARY_DIR}/CaffeConfig.cmake" @ONLY) | |
| # Add targets to the build-tree export set | |
| export(TARGETS caffe caffeproto FILE "${PROJECT_BINARY_DIR}/CaffeTargets.cmake") | |
| export(PACKAGE Caffe) | |
| # ---[ Configure install-tree CaffeConfig.cmake file ]--- | |
| configure_file("cmake/Templates/CaffeConfig.cmake.in" "${PROJECT_BINARY_DIR}/cmake/CaffeConfig.cmake" @ONLY) | |
| # Install the CaffeConfig.cmake and export set to use with install-tree | |
| install(FILES "${PROJECT_BINARY_DIR}/cmake/CaffeConfig.cmake" DESTINATION ${install_cmake_suffix}) | |
| install(EXPORT CaffeTargets DESTINATION ${install_cmake_suffix}) | |
| # ---[ Configure and install version file ]--- | |
| # TODO: Lines below are commented because Caffe doesn't declare its version in headers. | |
| # When the declarations are added, modify `caffe_extract_caffe_version()` macro and uncomment | |
| # configure_file(cmake/Templates/CaffeConfigVersion.cmake.in "${PROJECT_BINARY_DIR}/CaffeConfigVersion.cmake" @ONLY) | |
| # install(FILES "${PROJECT_BINARY_DIR}/CaffeConfigVersion.cmake" DESTINATION ${install_cmake_suffix}) | |
| endfunction() | |