TLUSTY/new/tlusty/CMakeLists.txt

84 lines
3.4 KiB
CMake

# ==============================================================================
# TLUSTY CMake 构建配置文件
# ==============================================================================
cmake_minimum_required(VERSION 3.15)
project(TLUSTY 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"
)
# ==============================================================================
# TLUSTY 模块文件 (按编译顺序排列)
# ==============================================================================
set(TLUSTY_MODULES
${CMAKE_CURRENT_SOURCE_DIR}/modules/impli_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/basics_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/iterat_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/alipar_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/atomic_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/modelq_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/odfpar_module.f90
${CMAKE_CURRENT_SOURCE_DIR}/modules/array1_module.f90
)
# ==============================================================================
# TLUSTY 子程序文件
# 注意:这些子程序需要从原始 tlusty208.f 中提取
# ==============================================================================
set(TLUSTY_SUBROUTINES
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/start_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/initia_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/resolv_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/solve_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/solves_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/accel2_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/rybsol_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/timing_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/comset_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/prdini_sub.f90
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/hedif_sub.f90
)
# ==============================================================================
# TLUSTY 主程序
# ==============================================================================
set(TLUSTY_MAIN
${CMAKE_CURRENT_SOURCE_DIR}/main/tlusty_main.f90
)
# ==============================================================================
# 创建可执行文件
# ==============================================================================
add_executable(tlusty.exe
${TLUSTY_MODULES}
${TLUSTY_SUBROUTINES}
${TLUSTY_MAIN}
)
# 设置模块依赖关系
target_include_directories(tlusty.exe PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/modules
)
# ==============================================================================
# 安装规则
# ==============================================================================
install(TARGETS tlusty.exe DESTINATION bin)
install(DIRECTORY ${CMAKE_BINARY_DIR}/modules/ DESTINATION include/tlusty)
# ==============================================================================
# 打印配置信息
# ==============================================================================
message(STATUS "TLUSTY 配置:")
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
message(STATUS " 模块目录:${CMAKE_BINARY_DIR}/modules")