# This is a CMake file, part of Unidata's netCDF-CXX4 package. ################################## # Set Project Properties ################################## #Minimum required CMake Version cmake_minimum_required(VERSION 2.8.12) #Project Name PROJECT(NCXX C CXX) set(PACKAGE "netcdf-cxx4" CACHE STRING "") ##### # Version Info: # # Release Version # Library Version # SO Version # # SO Version is computed from library version. See: # http://www.gnu.org/software/libtool/manual/libtool.html#Libtool-versioning ##### SET(NCXX_VERSION_MAJOR 4) SET(NCXX_VERSION_MINOR 3) SET(NCXX_VERSION_PATCH 2) SET(NCXX_VERSION_NOTE "-developer") SET(NCXX_VERSION ${NCXX_VERSION_MAJOR}.${NCXX_VERSION_MINOR}.${NCXX_VERSION_PATCH}${NCXX_VERSION_NOTE}) SET(VERSION ${NCXX_VERSION}) SET(NCXX_LIB_VERSION 1.1.0) SET(NCXX_SO_VERSION 1) SET(PACKAGE_VERSION ${VERSION}) # Get system configuration, Use it to determine osname, os release, cpu. These # will be used when committing to CDash. find_program(UNAME NAMES uname) IF(UNAME) macro(getuname name flag) exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}") endmacro(getuname) getuname(osname -s) getuname(osrel -r) getuname(cpu -m) set(TMP_BUILDNAME "${osname}-${osrel}-${cpu}" CACHE STRING "Build name variable for CDash") ENDIF() ### # Allow for some customization of the buildname. # This will make it easier to identify different builds, # based on values passed from command line/shell scripts. # # For ctest scripts, we can use CTEST_BUILD_NAME. ### SET(BUILDNAME_PREFIX "" CACHE STRING "") SET(BUILDNAME_SUFFIX "" CACHE STRING "") IF(BUILDNAME_PREFIX) SET(TMP_BUILDNAME "${BUILDNAME_PREFIX}-${TMP_BUILDNAME}") ENDIF() IF(BUILDNAME_SUFFIX) SET(TMP_BUILDNAME "${TMP_BUILDNAME}-${BUILDNAME_SUFFIX}") ENDIF() IF(NOT BUILDNAME) SET(BUILDNAME "${TMP_BUILDNAME}" CACHE STRING "Build name variable for CDash") ENDIF() ### # End BUILDNAME customization. ### # For CMAKE_INSTALL_{LIBDIR,INCLUDEDIR,...} INCLUDE(GNUInstallDirs) IF(MSVC) SET(GLOBAL PROPERTY USE_FOLDERS ON) ENDIF() #Add custom CMake Module SET(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/" CACHE INTERNAL "Location of our custom CMake modules.") # auto-configure style checks, other CMake modules. INCLUDE(${CMAKE_ROOT}/Modules/CheckLibraryExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckIncludeFile.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckTypeSize.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckCXXSourceCompiles.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckCSourceCompiles.cmake) INCLUDE(${CMAKE_ROOT}/Modules/TestBigEndian.cmake) INCLUDE(${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake) INCLUDE(${CMAKE_ROOT}/Modules/GetPrerequisites.cmake) INCLUDE(CheckCCompilerFlag) FIND_PACKAGE(PkgConfig QUIET) # A macro to check if a C linker supports a particular flag. MACRO(CHECK_CXX_LINKER_FLAG M_FLAG M_RESULT) SET(T_REQ_FLAG "${CMAKE_REQUIRED_FLAGS}") SET(CMAKE_REQUIRED_FLAGS "${M_FLAG}") CHECK_CXX_SOURCE_COMPILES("int main() {return 0;}" ${M_RESULT}) SET(CMAKE_REQUIRED_FLAGS "${T_REQ_FLAG}") ENDMACRO() # Set the build type. IF(NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE DEBUG CACHE STRING "Choose the type of build, options are: None, Debug, Release." FORCE) ENDIF() # Set build type uppercase STRING(TOUPPER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE) # Determine the configure date. EXECUTE_PROCESS( COMMAND date OUTPUT_VARIABLE CONFIG_DATE ) IF(CONFIG_DATE) string(STRIP ${CONFIG_DATE} CONFIG_DATE) ENDIF() # Check to see if we have bash. FIND_PROGRAM(HAVE_BASH bash) IF(HAVE_BASH) STRING(COMPARE EQUAL "${HAVE_BASH}" "C:/Windows/System32/bash.exe" IS_BASH_EXE) IF(NOT IS_BASH_EXE) MESSAGE(STATUS "Found bash: ${HAVE_BASH}") ELSE() MESSAGE(STATUS "Ignoring ${HAVE_BASH}") SET(HAVE_BASH "") ENDIF() ELSE() MESSAGE(STATUS "Bash shell not found; disabling shell script tests.") ENDIF() ## # Allow for extra dependencies. ## SET(EXTRA_DEPS "") ################################ # End Project Properties ################################ ################################ # Utility Macros ################################ # A function used to create autotools-style 'yes/no' definitions. # If a variable is set, it 'yes' is returned. Otherwise, 'no' is # returned. # # Also creates a version of the ret_val prepended with 'NC', # when feature is true, which is used to generate netcdf_meta.h. FUNCTION(is_disabled feature ret_val) IF(${feature}) SET(${ret_val} "no" PARENT_SCOPE) ELSE() SET(${ret_val} "yes" PARENT_SCOPE) SET("NC_${ret_val}" 1 PARENT_SCOPE) ENDIF(${feature}) ENDFUNCTION() FUNCTION(is_enabled feature ret_val) IF(${feature}) SET(${ret_val} "yes" PARENT_SCOPE) SET("NC_${ret_val}" 1 PARENT_SCOPE) ELSE() SET(${ret_val} "no" PARENT_SCOPE) SET("NC_${ret_val}" 0 PARENT_SCOPE) ENDIF(${feature}) ENDFUNCTION() ### # A macro to add a binary test. ### MACRO(add_bin_test prefix F) SET(CUR_TEST "${prefix}_${F}") ADD_EXECUTABLE(${CUR_TEST} ${F}.cpp) TARGET_LINK_LIBRARIES(${CUR_TEST} netcdf-cxx4 ${EXTRA_LIBS} ) IF(MSVC) SET_TARGET_PROPERTIES(${CUR_TEST} PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" ) ENDIF() ADD_TEST(${CUR_TEST} ${EXECUTABLE_OUTPUT_PATH}/${CUR_TEST}) ### # If visual studio, # do a little bit of housekeeping/reorganization. ### IF(MSVC) SET_PROPERTY(TEST ${CUR_TEST} PROPERTY FOLDER "tests/") SET_TARGET_PROPERTIES(${CUR_TEST} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) SET_TARGET_PROPERTIES(${CUR_TEST} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}) SET_TARGET_PROPERTIES(${CUR_TEST} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}) ENDIF() ENDMACRO() ### # A macro to add a shell test. ### MACRO(add_sh_test prefix F) IF(HAVE_BASH) ADD_TEST(${prefix}_${F} bash "-c" "export srcdir=${CMAKE_CURRENT_SOURCE_DIR};export TOPSRCDIR=${CMAKE_SOURCE_DIR};${CMAKE_CURRENT_BINARY_DIR}/${F}.sh") ENDIF() ENDMACRO() # Build a binary used by a script, but don't make a test out of it. MACRO(build_bin_test F) ADD_EXECUTABLE(${F} ${F}.cpp) TARGET_LINK_LIBRARIES(${F} netcdf-cxx4) IF(MSVC) SET_TARGET_PROPERTIES(${F} PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" ) SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_CURRENT_BINARY_DIR}) SET_TARGET_PROPERTIES(${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_CURRENT_BINARY_DIR}) ENDIF() ENDMACRO() ################################ # End Utility Macros ################################ ################################ # Set CTest Properties ################################ ENABLE_TESTING() INCLUDE(CTest) ## # Copy the CTest customization file into binary directory, as required. ## FILE(COPY ${CMAKE_CURRENT_SOURCE_DIR}/CTestCustom.cmake DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) ## # Set Memory test program for non-MSVC based builds. # Assume valgrind for now. ## IF(NOT MSVC) SET(CTEST_MEMORYCHECK_COMMAND valgrind CACHE STRING "") ENDIF() ## # Set variable to define the build type. ## INCLUDE(GenerateExportHeader) ENABLE_TESTING() INCLUDE(CTest) ################################ # End CTest Properties ################################ ################################ # User Options ################################ ## # Default building shared libraries. # BUILD_SHARED_LIBS is provided by/used by # CMake directly. ## OPTION(BUILD_SHARED_LIBS "Configure netcdf-cxx as a shared library." ON) IF(BUILD_SHARED_LIBS) SET(CMAKE_POSITION_INDEPENDENT_CODE ON) ENDIF() ## # Enable doxygen-generated documentation. ## OPTION(ENABLE_DOXYGEN "Enable generation of doxygen-based documentation." OFF) IF(ENABLE_DOXYGEN) FIND_PACKAGE(Doxygen REQUIRED) FIND_PROGRAM(NCXX_DOT NAMES dot) IF(NCXX_DOT) SET(HAVE_DOT YES CACHE STRING "") ELSE(NCXX_DOT) SET(HAVE_DOT NO CACHE STRING "") ENDIF(NCXX_DOT) ENDIF() OPTION(NCXX_ENABLE_TESTS "Enable tests. Run with 'make test'." ON) IF(NCXX_ENABLE_TESTS) # Options for CTest-based tests, dashboards. SET(NCXX_CTEST_PROJECT_NAME "netcdf-cxx4" CACHE STRING "Project Name for CTest-based testing purposes.") SET(NCXX_CTEST_DROP_SITE "cdash.unidata.ucar.edu" CACHE STRING "Dashboard location for CTest-based testing purposes.") SET(NCXX_CTEST_DROP_LOC_PREFIX "" CACHE STRING "Prefix for Dashboard location on remote server when using CTest-based testing.") FIND_PROGRAM(HOSTNAME_CMD NAMES hostname) IF(NOT MSVC) SET(HOSTNAME_ARG "-s") ENDIF() IF(HOSTNAME_CMD) EXEC_PROGRAM(${HOSTNAME_CMD} ARGS "${HOSTNAME_ARG}" OUTPUT_VARIABLE HOSTNAME) SET(NCXX_CTEST_SITE "${HOSTNAME}" CACHE STRING "Hostname of test machine.") ENDIF() IF(NCXX_CTEST_SITE) SET(SITE "${NCXX_CTEST_SITE}" CACHE STRING "") ENDIF() # Create a CTestConfig file from the template. CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/CTestConfig.cmake.in" "${CMAKE_CURRENT_SOURCE_DIR}/CTestConfig.cmake" @ONLY ) ENDIF() ## # Mark some options as advanced. ## MARK_AS_ADVANCED(NCXX_CTEST_PROJECT_NAME NCXX_CTEST_DROP_SITE NCXX_CTEST_DROP_LOC_PREFIX ) ################################ # End User Options ################################ ################################ # Seek out dependent libraries. ################################ ### # Find NetCDF ### IF(NOT netCDF_LIBRARIES AND NOT netCDF_INCLUDE_DIR) FIND_PACKAGE(netCDF QUIET) ELSE() SET(netCDF_FOUND TRUE) ENDIF() IF (netCDF_FOUND) SET(NETCDF_C_LIBRARY ${netCDF_LIBRARIES}) SET(NETCDF_C_INCLUDE_DIR ${netCDF_INCLUDE_DIR}) message(STATUS "Found netCDF CMake package: ${NETCDF_C_LIBRARY}") ELSE() # netCDF not properly packaged. Try to find it manually. FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf libnetcdf) IF(NOT NETCDF_C_LIBRARY) MESSAGE(FATAL_ERROR "libnetcdf not found. Please reinstall and try again.") ELSE() FIND_PATH(NETCDF_C_INCLUDE_DIR "netcdf.h") MESSAGE(STATUS "Found netcdf: ${NETCDF_C_LIBRARY}") IF(NOT NETCDF_C_INCLUDE_DIR) MESSAGE(FATAL_ERROR "Directory containing netcdf.h cannot be found. Please reinstall and try again.") ELSE() GET_FILENAME_COMPONENT(netCDF_LIB_DIR "${NETCDF_C_LIBRARY}" REALPATH) INCLUDE_DIRECTORIES(SYSTEM ${NC_H_INCLUDE_DIR}) ENDIF() ENDIF() ENDIF() if (NOT TARGET netCDF::netcdf) add_library(netCDF::netcdf UNKNOWN IMPORTED) set_target_properties(netCDF::netcdf PROPERTIES IMPORTED_LOCATION "${NETCDF_C_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${NETCDF_C_INCLUDE_DIR}" ) endif() ### # Check to see if netcdf-c was built with parallel. ### CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_use_parallel_enabled "" NC_IS_PARALLEL) IF(NC_IS_PARALLEL) SET(BUILD_PARALLEL ${NC_IS_PARALLEL} CACHE STRING "") ENDIF() ### # Check to see if netcdf-c was built with plugin support. ### CHECK_LIBRARY_EXISTS(${NETCDF_C_LIBRARY} nc_def_var_filter "" NC_HAS_DEF_VAR_FILTER) IF(NC_HAS_DEF_VAR_FILTER) SET(HAS_DEF_VAR_FILTER ${NC_HAS_DEF_VAR_FILTER} CACHE STRING "") ENDIF(NC_HAS_DEF_VAR_FILTER) ### # Find HDF5 ### IF(MSVC) SET(SEARCH_PACKAGE_NAME ${HDF5_PACKAGE_NAME}) FIND_PACKAGE(HDF5 NAMES ${SEARCH_PACKAGE_NAME} COMPONENTS C HL NO_MODULES REQUIRED ${NC_HDF5_LINK_TYPE}) ELSE(MSVC) FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED) ENDIF(MSVC) CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARIES} H5free_memory "" HAVE_H5FREE_MEMORY) IF(NOT HAVE_H5FREE_MEMORY) MESSAGE(STATUS "Plugin support requires libhdf5 with H5Free support. Your libhdf5 install does not provide H5Free. Please install a newer version of libhdf5 if you require plugin compression support.") SET(NC_HAS_DEF_VAR_FILTER "") ENDIF() ################################ # End 'seek out dependent libraries' ################################ ################################ # Compiler Configuration ################################ ## # Supress unused variable and parameter warnings, for the time being, # on GCC. # # Also, set some other default compiler flags. ## SET(CMAKE_CXX_STANDARD 11) SET(CMAKE_CXX_STANDARD_REQUIRED TRUE) IF(CMAKE_COMPILER_IS_GNUCC OR APPLE) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-unused-variable -Wno-unused-parameter") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-unused-variable -Wno-unused-parameter") OPTION(ENABLE_COVERAGE_TESTS "Enable compiler flags needed to perform coverage tests." OFF) OPTION(ENABLE_CONVERSION_WARNINGS "Enable warnings for implicit conversion from 64 to 32-bit datatypes." ON) OPTION(ENABLE_LARGE_FILE_TESTS "Enable large file tests." OFF) # Check to see if -Wl,--no-undefined is supported. CHECK_CXX_LINKER_FLAG("-Wl,--no-undefined" LIBTOOL_HAS_NO_UNDEFINED) IF(LIBTOOL_HAS_NO_UNDEFINED) SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -Wl,--no-undefined") ENDIF() SET(CMAKE_REQUIRED_FLAGS "${TMP_CMAKE_REQUIRED_FLAGS}") # Coverage tests need to have optimization turned off. IF(ENABLE_COVERAGE_TESTS) SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -g -O0 -fprofile-arcs -ftest-coverage") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage") MESSAGE(STATUS "Coverage Tests: On.") ENDIF() # Warnings for 64-to-32 bit conversions. IF(ENABLE_CONVERSION_WARNINGS) CHECK_CXX_COMPILER_FLAG(-Wconversion CXX_HAS_WCONVERSION) CHECK_CXX_COMPILER_FLAG(-Wshorten-64-to-32 CXX_HAS_SHORTEN_64_32) IF(CXX_HAS_SHORTEN_64_32) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wshorten-64-to-32") ENDIF() IF(CXX_HAS_WCONVERSION) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wconversion") ENDIF() ENDIF(ENABLE_CONVERSION_WARNINGS) ENDIF(CMAKE_COMPILER_IS_GNUCC OR APPLE) # End default linux gcc & apple compiler options. ADD_DEFINITIONS() # Supress CRT Warnings. # Only necessary for Windows IF(MSVC) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) ENDIF() ################################ # End Compiler Configuration ################################ ################################ # Configuration for post-install RPath # Adapted from http://www.cmake.org/Wiki/CMake_RPATH_handling ################################ IF(NOT MSVC) # use, i.e. don't skip the full RPATH for the build tree SET(CMAKE_SKIP_BUILD_RPATH FALSE) # when building, don't use the install RPATH already # (but later on when installing) SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) if(APPLE) set(CMAKE_MACOSX_RPATH ON) endif(APPLE) # add the automatically determined parts of the RPATH # which point to directories outside the build tree to the install RPATH SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) # the RPATH to be used when installing, # but only if it's not a system directory LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemDir ) IF("${isSystemDir}" STREQUAL "-1") SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") ENDIF() ENDIF() ################################ # End configuration for post-install RPath ################################ ################################ # Configure, print libnetcdf-cxx.settings # file. ################################ # Set variables to mirror those used by autoconf. # This way we don't need to maintain two separate template # files. SET(host_cpu "${cpu}") SET(host_vendor "${osname}") SET(host_os "${osrel}") SET(abs_top_builddir "${CMAKE_CURRENT_BINARY_DIR}") SET(CC_VERSION "${CMAKE_C_COMPILER}") SET(CXX_VERSION "${CMAKE_CXX_COMPILER}") # Build *FLAGS for libnetcdf.settings. SET(CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${CMAKE_BUILD_TYPE}}") SET(CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}") SET(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE}}") is_disabled(BUILD_SHARED_LIBS enable_static) is_enabled(BUILD_SHARED_LIBS enable_shared) # Remove libnetcdf from NC_LIBS. STRING(REPLACE "-lnetcdf-cxx4 " "" TMP_NCXX_LIBS "${NCXX_LIBS}") SET(LIBS "${TMP_NCXX_LIBS}") CONFIGURE_FILE( "${CMAKE_CURRENT_SOURCE_DIR}/libnetcdf-cxx.settings.in" "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf-cxx.settings" @ONLY ) # Read in settings file, print out. # Avoid using system-specific calls so that this # might also work on Windows. FILE( READ "${CMAKE_CURRENT_BINARY_DIR}/libnetcdf-cxx.settings" LIBNETCDFCXX_SETTINGS ) MESSAGE(${LIBNETCDFCXX_SETTINGS}) # Install libnetcdf-cxx.settings file into same location # as the libraries. INSTALL( FILES "${NCXX_BINARY_DIR}/libnetcdf-cxx.settings" DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT libraries ) ##### # End libnetcdf-cxx.settings section. ##### ##### # Traverse into subdirectories. ##### ## # Set up include directories. ## # INCLUDE_DIRECTORIES(cxx4 examples) ADD_SUBDIRECTORY(cxx4) ADD_SUBDIRECTORY(examples) IF(ENABLE_DOXYGEN) ADD_SUBDIRECTORY(docs) ENDIF() ##### # Begin ncxx4-config section ##### FILE(MAKE_DIRECTORY ${NCXX_BINARY_DIR}/tmp) CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/ncxx4-config.cmake.in" "${NCXX_BINARY_DIR}/tmp/ncxx4-config" @ONLY) FILE(COPY "${NCXX_BINARY_DIR}/tmp/ncxx4-config" DESTINATION ${NCXX_BINARY_DIR}/ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) INSTALL(PROGRAMS ${NCXX_BINARY_DIR}/ncxx4-config DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT utilities) ##### # End ncxx4-config section ##### ##### # Build test_common.sh ##### SET(EXTRA_DIST ${EXTRA_DIST} ${CMAKE_CURRENT_SOURCE_DIR}/test_common.in) SET(TOPSRCDIR "${CMAKE_CURRENT_SOURCE_DIR}") SET(TOPBUILDDIR "${CMAKE_CURRENT_BINARY_DIR}") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/test_common.in ${CMAKE_CURRENT_BINARY_DIR}/test_common.sh @ONLY NEWLINE_STYLE LF) ##### # Options ##### include(CMakePackageConfigHelpers) set(ConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/netCDF") # Create export configuration write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/netCDFCxxConfigVersion.cmake" VERSION ${NCXX_VERSION} COMPATIBILITY SameMajorVersion ) install( EXPORT netcdf-cxx4Targets FILE netcdf-cxx4Targets.cmake NAMESPACE netCDF:: DESTINATION ${ConfigPackageLocation} ) export( EXPORT netcdf-cxx4Targets FILE netcdf-cxx4Targets.cmake NAMESPACE netCDF:: ) configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/netCDFCxxConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/netCDFCxxConfig.cmake" INSTALL_DESTINATION "${ConfigPackageLocation}" ) install( FILES "${CMAKE_CURRENT_BINARY_DIR}/netCDFCxxConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/netCDFCxxConfigVersion.cmake" DESTINATION "${ConfigPackageLocation}" COMPONENT headers ) IF(NC_HAS_DEF_VAR_FILTER) ##### # Build cxx4/findplugin.sh ##### SET(ISCMAKE "1") CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/cxx4/findplugin.in ${CMAKE_CURRENT_BINARY_DIR}/cxx4/findplugin.sh @ONLY NEWLINE_STYLE LF) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/examples/findplugin.in ${CMAKE_CURRENT_BINARY_DIR}/examples/findplugin.sh @ONLY NEWLINE_STYLE LF) ADD_SUBDIRECTORY(plugins) ENDIF(NC_HAS_DEF_VAR_FILTER) IF(ENABLE_DOXYGEN) ADD_SUBDIRECTORY(docs) ENDIF() ## # CPack, CMakeInstallation.cmake file. ## INCLUDE(CMakeInstallation.cmake)