90 lines
3.6 KiB
CMake
90 lines
3.6 KiB
CMake
# ==============================================================================
|
|
# SYNSPEC CMake 构建配置文件
|
|
# ==============================================================================
|
|
|
|
cmake_minimum_required(VERSION 3.15)
|
|
project(SYNSPEC Fortran)
|
|
|
|
# 编译器设置
|
|
set(CMAKE_FORTRAN_COMPILER gfortran)
|
|
set(CMAKE_Fortran_FLAGS "-O3 -fno-automatic")
|
|
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0 -fcheck=all -Wall")
|
|
|
|
# 模块输出目录
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
|
|
)
|
|
|
|
# ==============================================================================
|
|
# SYNSPEC 模块文件 (按编译顺序排列)
|
|
# ==============================================================================
|
|
set(SYNSPEC_MODULES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/params_module.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/lindat_module.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/modelp_module.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/synthp_module.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/wincom_module.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/optpar_module.f90
|
|
)
|
|
|
|
# ==============================================================================
|
|
# SYNSPEC 子程序文件
|
|
# 注意:这些子程序需要从原始 synspec54.f 中提取
|
|
# ==============================================================================
|
|
set(SYNSPEC_SUBROUTINES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/start_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inpmod_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inkur_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/change_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inpbf_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/setwin_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/ingrid_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inibl0_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inimod_sub.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/tint_sub.f90
|
|
)
|
|
|
|
# ==============================================================================
|
|
# SYNSPEC 工具程序
|
|
# ==============================================================================
|
|
set(SYNSPEC_UTILS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/utils/rotin.f90
|
|
${CMAKE_CURRENT_SOURCE_DIR}/utils/ngrid.f90
|
|
)
|
|
|
|
# ==============================================================================
|
|
# SYNSPEC 主程序
|
|
# ==============================================================================
|
|
set(SYNSPEC_MAIN
|
|
${CMAKE_CURRENT_SOURCE_DIR}/main/synspec_main.f90
|
|
)
|
|
|
|
# ==============================================================================
|
|
# 创建可执行文件
|
|
# ==============================================================================
|
|
add_executable(synspec.exe
|
|
${SYNSPEC_MODULES}
|
|
${SYNSPEC_SUBROUTINES}
|
|
${SYNSPEC_UTILS}
|
|
${SYNSPEC_MAIN}
|
|
)
|
|
|
|
# 设置模块依赖关系
|
|
target_include_directories(synspec.exe PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/modules
|
|
)
|
|
|
|
# ==============================================================================
|
|
# 安装规则
|
|
# ==============================================================================
|
|
install(TARGETS synspec.exe DESTINATION bin)
|
|
install(DIRECTORY ${CMAKE_BINARY_DIR}/modules/ DESTINATION include/synspec)
|
|
|
|
# ==============================================================================
|
|
# 打印配置信息
|
|
# ==============================================================================
|
|
message(STATUS "SYNSPEC 配置:")
|
|
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
|
|
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
|
|
message(STATUS " 模块目录:${CMAKE_BINARY_DIR}/modules")
|