# ============================================================================== # 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")