Skip to content

Commit afed4a3

Browse files
committed
compile options target only:
1 parent dd4de94 commit afed4a3

2 files changed

Lines changed: 16 additions & 36 deletions

File tree

CMakeLists.txt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
cmake_minimum_required(VERSION 3.21...4.3)
1+
cmake_minimum_required(VERSION 3.22...4.3)
22

33
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
44
message(FATAL_ERROR "In-source builds are not allowed. Do like:
@@ -17,6 +17,8 @@ VERSION 1.7.2
1717

1818
enable_testing()
1919

20+
include(GNUInstallDirs)
21+
2022
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
2123

2224
include(options.cmake)
@@ -48,12 +50,13 @@ endif()
4850

4951
add_library(nc4fortran)
5052
target_include_directories(nc4fortran PUBLIC
51-
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
52-
$<INSTALL_INTERFACE:include>
53+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}>
54+
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
5355
)
56+
target_compile_options(nc4fortran PRIVATE ${nc4fortran_fflags})
5457
target_link_libraries(nc4fortran PUBLIC NetCDF::NetCDF_Fortran)
5558
set_target_properties(nc4fortran PROPERTIES
56-
Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include
59+
Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}
5760
LABELS core
5861
VERSION ${PROJECT_VERSION}
5962
)
@@ -70,11 +73,9 @@ endif()
7073

7174
add_subdirectory(src)
7275

73-
# GLOBAL needed for FetchContent use
74-
add_library(nc4fortran::nc4fortran INTERFACE IMPORTED GLOBAL)
75-
target_link_libraries(nc4fortran::nc4fortran INTERFACE nc4fortran)
76+
add_library(nc4fortran::nc4fortran ALIAS nc4fortran)
7677

77-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/nc4fortran.mod TYPE INCLUDE)
78+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_INCLUDEDIR}/nc4fortran.mod TYPE INCLUDE)
7879

7980
install(TARGETS nc4fortran EXPORT nc4fortran-targets)
8081

cmake/compilers.cmake

Lines changed: 7 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,19 @@
1-
# --- C compile flags
2-
if(CMAKE_C_COMPILER_ID MATCHES "Clang|GNU|^Intel")
3-
add_compile_options(
4-
"$<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:Debug>>:-Wextra>"
5-
"$<$<COMPILE_LANGUAGE:C>:-Wall>"
6-
"$<$<COMPILE_LANGUAGE:C>:-Werror=implicit-function-declaration>"
7-
)
8-
elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
9-
add_compile_options("$<$<COMPILE_LANGUAGE:C>:/W3>")
10-
endif()
1+
# --- Fortran compile flags
112

12-
if(WIN32)
13-
if(CMAKE_C_COMPILER_ID MATCHES "^Intel|MSVC")
14-
add_compile_options($<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:Debug>>:/Od>)
15-
endif()
16-
elseif(CMAKE_C_COMPILER_ID MATCHES "^Intel")
17-
add_compile_options($<$<AND:$<COMPILE_LANGUAGE:C>,$<CONFIG:Debug>>:-O0>)
18-
endif()
3+
set(nc4fortran_fflags)
194

20-
# --- Fortran compile flags
215
if(CMAKE_Fortran_COMPILER_ID MATCHES "^Intel")
226

23-
add_compile_options(
24-
"$<$<COMPILE_LANGUAGE:Fortran>:-warn>"
7+
list(APPEND nc4fortran_fflags
8+
"$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug,RelWithDebInfo>>:-warn>"
259
"$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug>>:-traceback;-check;-debug>"
2610
)
2711

28-
if(WIN32)
29-
add_compile_options($<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug>>:/Od>)
30-
else()
31-
add_compile_options($<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug>>:-O0>)
32-
endif()
33-
3412
elseif(CMAKE_Fortran_COMPILER_ID STREQUAL "GNU")
3513

36-
add_compile_options(
37-
"$<$<COMPILE_LANGUAGE:Fortran>:-Wall;-fimplicit-none;-Wno-maybe-uninitialized>"
14+
list(APPEND nc4fortran_fflags
15+
"$<$<COMPILE_LANGUAGE:Fortran>:-fimplicit-none>"
16+
"$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug,RelWithDebInfo>>:-Wall>"
3817
"$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Debug>>:-Wextra;-fcheck=all;-Werror=array-bounds>"
3918
"$<$<AND:$<COMPILE_LANGUAGE:Fortran>,$<CONFIG:Release>>:-fno-backtrace>"
4019
)

0 commit comments

Comments
 (0)