diff --git a/CMakeLists.txt b/CMakeLists.txt index 729f9eda40700f83448fae7f4532a89e6c6db516..8ff5f0870fc8211e4a77f9542900a522d542ca7e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,50 +1,56 @@ cmake_minimum_required( VERSION 3.27 FATAL_ERROR ) message(VERBOSE "Entering libcdi") -project(libcdi VERSION 2.5.1 LANGUAGES C ) +project(cdilib VERSION 2.5.1 LANGUAGES C ) set(CMAKE_C_STANDARD 11) include(CTest) include(CheckIncludeFile) + + # enable default internal libs -add_compile_definitions(HAVE_LIBGRIB=1) -add_compile_definitions(HAVE_LIBCGRIBEX=1) -add_compile_definitions(HAVE_LIBEXTRA=1) -add_compile_definitions(HAVE_LIBSERVICE=1) -add_compile_definitions(HAVE_LIBIEG=1) +list(APPEND cdi_compile_defs + HAVE_LIBGRIB=1 + HAVE_LIBCGRIBEX=1 + HAVE_LIBEXTRA=1 + HAVE_LIBSERVICE=1 + HAVE_LIBIEG=1 +) # ecCodes find_package(eccodes) if (${eccodes_FOUND}) - add_compile_definitions(HAVE_LIBGRIB_API=${eccodes_FOUND}) + list(APPEND cdi_compile_defs HAVE_LIBGRIB_API=${eccodes_FOUND}) message(VERBOSE "added compile definition HAVE_LIBGRIB_API=${eccodes_FOUND}") else() - message(WARNING "netcdf not found, compiling without netcdf") + message(WARNING "eccodes not found, compiling without eccodes") endif () # NetCDF find_package(netCDF COMPONENTS C REQUIRED) -check_include_file("netcdf.h" ${netcdf_flag} C) -if (${netCDF_FOUND}) - message(VERBOSE "added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") - message(VERBOSE "added compile definition HAVE_NETCDF4=${netCDF_FOUND}") - add_compile_definitions(HAVE_LIBNETCDF=${netCDF_FOUND}) - add_compile_definitions(HAVE_NETCDF4=${netCDF_FOUND}) +if (TARGET netCDF::netcdf) + list(APPEND cdi_compile_defs + HAVE_LIBNETCDF=${netCDF_FOUND} + HAVE_LIBNC_DAP=${netCDF_FOUND} + HAVE_NETCDF4=${netCDF_FOUND} + HAVE_LIBGRIB_API=${netCDF_FOUND} + HAVE_LIBGRIB=${netCDF_FOUND} + ) + message(VERBOSE "added to list of definitions: ${cdi_compile_defs} ") else() message(WARNING "netcdf not found, compiling without netcdf") endif () message(VERBOSE "looking for config.h in: ${PROJECT_BINARY_DIR}/src") -include_directories( "${PROJECT_BINARY_DIR}/src/config.h") - #adding subdirectories ## lib and general files +list(APPEND cdi_compile_defs CDI=1 CDI_SIZE_TYPE=size_t PACKAGE_NAME="${PROJECT_NAME}" VERSION="${CMAKE_PROJECT_VERSION}") add_subdirectory(src) -## cdi executable -add_subdirectory(app) #tests -add_subdirectory( tests ) +add_subdirectory(app) +add_subdirectory(tests) + diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 73253a6a1bcb5bfc3e040316791229889c3ddd22..ff3047c998e1452196ce33d84efc7db3088ef98b 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -2,8 +2,11 @@ add_executable(cdi cdi.c printinfo.c ) -target_include_directories(cdi PUBLIC +target_include_directories(cdi PRIVATE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src> $<INSTALL_INTERFACE:include ) -target_link_libraries(cdi PUBLIC cdilib netCDF::netcdf pthread) + +target_link_libraries(cdi PRIVATE cdilib netCDF::netcdf pthread) +target_include_directories(cdi PRIVATE "${PROJECT_BINARY_DIR}/src/config.h") +target_compile_definitions(cdi PRIVATE ${cdi_netcdf_definitions}) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c59d267e15c1bdc344d5754c08c33846b92fe2d5..b7dde6384f20bb9a53d8a8cec63f15517faa3d4b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -195,7 +195,9 @@ add_library(cdilib # INSTALL_HEADERS_LIST cdi.h ) -target_link_libraries(cdilib eccodes ${netCDF_LIBRARIES}) -target_compile_definitions(cdilib PRIVATE CDI=1) -target_compile_definitions(cdilib PRIVATE PACKAGE_NAME="cdilib") -target_compile_definitions(cdilib PRIVATE VERSION="${CMAKE_PROJECT_VERSION}") +target_include_directories(cdilib PRIVATE "${PROJECT_BINARY_DIR}/src/config.h") +target_link_libraries(cdilib eccodes netCDF::netcdf) +target_compile_definitions(cdilib PRIVATE PACKAGE_NAME="${PROJECT_NAME}" VERSION="${CMAKE_PROJECT_VERSION}" ${cdi_compile_defs}) + +add_library(cdilib::cdilib ALIAS cdilib) +