Skip to content

Commit c9bc2a3

Browse files
committed
cmake packaging
1 parent dcf3339 commit c9bc2a3

File tree

9 files changed

+57
-24
lines changed

9 files changed

+57
-24
lines changed

.github/workflows/ci.yml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ jobs:
5757
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5858
with:
5959
upload_url: ${{ github.event.release.upload_url }}
60-
asset_path: build/package/nc4fortran-${{ steps.get_version.outputs.VERSION }}-Linux.zip
61-
asset_name: nc4fortran-${{ steps.get_version.outputs.VERSION }}-Linux.zip
60+
asset_path: build/package/nc4fortran-${{ steps.get_version.outputs.VERSION }}-Linux.tar.gz
61+
asset_name: nc4fortran-${{ steps.get_version.outputs.VERSION }}-Linux.tar.gz
6262
asset_content_type: application/zip
6363

6464

@@ -84,7 +84,6 @@ jobs:
8484
working-directory: build
8585

8686

87-
8887
mac:
8988
needs: linux
9089
runs-on: macos-latest
@@ -129,6 +128,6 @@ jobs:
129128
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
130129
with:
131130
upload_url: ${{ github.event.release.upload_url }}
132-
asset_path: build/nc4fortran-${{ steps.get_version.outputs.VERSION }}-Darwin.zip
133-
asset_name: nc4fortran-${{ steps.get_version.outputs.VERSION }}-Darwin.zip
131+
asset_path: build/nc4fortran-${{ steps.get_version.outputs.VERSION }}-Darwin.tar.gz
132+
asset_name: nc4fortran-${{ steps.get_version.outputs.VERSION }}-Darwin.tar.gz
134133
asset_content_type: application/zip

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ if(${PROJECT_NAME}_BUILD_TESTING)
5656
add_subdirectory(src/tests)
5757
endif()
5858

59+
include(cmake/pkgconf.cmake)
5960
include(cmake/install.cmake)
6061

6162
include(FeatureSummary)

Examples/CMakeLists.txt

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,15 @@ include(CTest)
77

88
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../cmake/Modules)
99

10-
find_package(nc4fortran CONFIG)
10+
# --- find external libraries
1111

12-
if(NOT nc4fortran_FOUND)
13-
message(FATAL_ERROR "could not find nc4fortran")
14-
endif()
12+
find_package(NetCDF COMPONENTS Fortran REQUIRED)
1513

16-
include(${nc4fortran_DIR}/nc4fortranTargets.cmake)
14+
# --- Find our library
1715

18-
if(NOT TARGET nc4fortran::nc4fortran)
19-
message(FATAL_ERROR "nc4fortran not found.")
20-
endif()
16+
set(CMAKE_FIND_PACKAGE_PREFER_CONFIG true)
2117

22-
find_package(NetCDF COMPONENTS Fortran REQUIRED)
18+
find_package(nc4fortran REQUIRED PATHS ${PROJECT_SOURCE_DIR}/../build)
2319

2420
# --- Fortran interface for examples
2521
add_library(fortran_interface fortran_interface.f90)

cmake/Config.cmake.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@[email protected]")
4+
5+
check_required_components(@PROJECT_NAME@)

cmake/install.cmake

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
include(CMakePackageConfigHelpers)
44

5-
configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/${PROJECT_NAME}Config.cmake.in
6-
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
5+
configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/Config.cmake.in
6+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake
77
INSTALL_DESTINATION lib)
88

99
write_basic_package_version_file(
10-
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
10+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake
1111
VERSION ${${PROJECT_NAME}_VERSION}
1212
COMPATIBILITY SameMinorVersion
1313
)
@@ -19,14 +19,23 @@ install(EXPORT ${PROJECT_NAME}Targets
1919
)
2020

2121
install(FILES
22-
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
23-
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
22+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake
23+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake
2424
DESTINATION lib/cmake/${PROJECT_NAME})
2525

26+
export(EXPORT ${PROJECT_NAME}Targets
27+
FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Targets.cmake"
28+
NAMESPACE ${PROJECT_NAME}::
29+
)
30+
2631
# --- CPack
2732

28-
set(CPACK_GENERATOR ZIP)
29-
set(CPACK_SOURCE_GENERATOR ZIP)
33+
set(_fmt TGZ)
34+
if(WIN32)
35+
set(_fmt ZIP)
36+
endif()
37+
set(CPACK_GENERATOR ${_fmt})
38+
set(CPACK_SOURCE_GENERATOR ${_fmt})
3039
set(CPACK_PACKAGE_VENDOR "Michael Hirsch")
3140
set(CPACK_PACKAGE_CONTACT "Michael Hirsch")
3241
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libnetcdff-dev")

cmake/nc4fortranConfig.cmake.in

Lines changed: 0 additions & 3 deletions
This file was deleted.

cmake/options.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,8 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS on)
77
if(NOT dev)
88
set(EP_UPDATE_DISCONNECTED true)
99
endif()
10+
11+
# --- auto-ignore build directory
12+
if(NOT EXISTS ${PROJECT_BINARY_DIR}/.gitignore)
13+
file(WRITE ${PROJECT_BINARY_DIR}/.gitignore "*")
14+
endif()

cmake/pkgconf.cmake

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# --- generate pkg-config .pc
2+
3+
set(pc_requires "netcdf-fortran")
4+
5+
set(pc_filename ${PROJECT_NAME}.pc)
6+
configure_file(${CMAKE_CURRENT_LIST_DIR}/pkgconf.pc.in ${pc_filename} @ONLY)
7+
8+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${pc_filename} DESTINATION lib/pkgconfig)

cmake/pkgconf.pc.in

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
prefix="@CMAKE_INSTALL_PREFIX@"
2+
exec_prefix="${prefix}"
3+
libdir="${prefix}/lib"
4+
includedir="${prefix}/include"
5+
6+
Name: @PROJECT_NAME@
7+
Description: @CMAKE_PROJECT_DESCRIPTION@
8+
URL: @CMAKE_PROJECT_HOMEPAGE_URL@
9+
Version: @PROJECT_VERSION@
10+
Requires: @pc_requires@
11+
Cflags: -I"${includedir}"
12+
Libs: -L"${libdir}" -l@PROJECT_NAME@
13+
Libs.private: -L"${libdir}" -l@PROJECT_NAME@

0 commit comments

Comments
 (0)