CMakeList.txt for ifort with netcdf and mpi
./CMakeLists.txt:
cmake_minimum_required (VERSION 2.6) project (inversion Fortran) set(CMAKE_Fortran_COMPILER "mpif90") set(CMAKE_AR xiar) # for -ipo set(CMAKE_LINKER xild) # for -ipo message(STATUS "xiar: " ${CMAKE_AR}) message(STATUS "xild: " ${CMAKE_LINKER}) set(CMAKE_LIBRARY_PATH ~/.soft/netcdf4/main/lib) set(CMAKE_INCLUDE_PATH ~/.soft/netcdf4/main/include) find_path(NETCDF_INCLUDE_DIR netcdf.mod DOC "NetCDF include directory (must contain netcdf.mod)" ) if(NETCDF_INCLUDE_DIR) MESSAGE(STATUS "NETCDF module found in " ${NETCDF_INCLUDE_DIR}) else() MESSAGE(STATUS "WARNING: No NETCDF bindings are found.") endif() find_library(NETCDF_FORTRAN_LIB netcdff DOC "NetCDF Fortran library" ) if(NETCDF_FORTRAN_LIB) set(NETCDF_LIBS ${NETCDF_LIBS} ${NETCDF_FORTRAN_LIB}) MESSAGE(STATUS "NETCDF Fortran library: " ${NETCDF_FORTRAN_LIB}) else() MESSAGE(STATUS "WARNING: No Fortran NETCDF bindings are found. This is not always fatal.") endif() find_package(MPI REQUIRED) message(STATUS "MPI Fortran: " ${MPI_Fortran_FOUND}) message(STATUS "MPI Fortran include: " ${MPI_Fortran_INCLUDE_PATH}) message(STATUS "MPI Fortran compile: " ${MPI_Fortran_COMPILER}) message(STATUS "MPI Fortran library: " ${MPI_Fortran_LIBRARIES}) message(STATUS "MPI Fortran LINK: " ${MPI_Fortran_LINK_FLAGS}) message(STATUS "MPI Fortran COMPILE_FLAGS: " ${MPI_Fortran_COMPILE_FLAGS}) add_subdirectory (src bin)
./src/CMakeLists.txt:
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
include_directories(${NETCDF_INCLUDE_DIR} ${MPI_Fortran_INCLUDE_PATH})
add_definitions(-DPSV -DSTATIC -DCondFreeTIMG -DCondFreeVLOW)
set(CMAKE_Fortran_FLAGS "-ipo -warn all -fpp -axSSE3 -O3 -ftz -align records -mp1" )
add_library(mod mod_constants.F90 mod_math.F90 mod_string.F90
mod_nfseis.F90 mod_para.F90 mod_mpi.F90 mod_media.F90 mod_grid.F90
mod_macdrp.F90 mod_macdrp_backward.F90 mod_save.F90 mod_io.F90
mod_aw.F90 mod_abs_exp.F90 mod_src.F90 mod_misf.F90 mod_forward.F90)
set(PROGRAMS seis2d_grid seis2d_metric seis2d_media seis2d_source
seis2d_station inversion)
#set(PROGRAMS seis2d_grid)
set(CORELIBS mod ${NETCDF_FORTRAN_LIB} ${MPI_Fortran_LIBRARIES})
message(STATUS "CORE----------" ${CORELIBS})
foreach(program ${PROGRAMS})
add_executable(${program} ${program}.F90)
target_link_libraries(${program} ${CORELIBS})
set_target_properties(${program} PROPERTIES COMPILE_FLAGS
"${CMAKE_Fortran_FLAGS}")
endforeach(program)

浙公网安备 33010602011771号