【发布时间】:2014-08-26 14:28:25
【问题描述】:
我为 Fortran 应用程序开发了一个基于 CMake 的编译过程。该应用程序由放置在当前目录中的多个模块文件组成。我还创建了一个名为tst 的测试目录,其中包含测试应用程序模块中重要功能和子例程的小程序。
一切都很好,除了我无法让 Cmake 正确编译测试程序。目前只有一个名为tst_inter_s 的测试程序。它被编译并生成了一个可执行文件,但不是编译实际的tst_inter_s Cmake 似乎选择了主项目可执行文件并再次编译它。它与主项目文件具有相同的大小和内容。任何纠正 CMakeLists 文件的帮助将不胜感激。它们张贴在下面。
CMakeLists.txt,主目录
# Minimum cmake version
cmake_minimum_required(VERSION 2.8)
# Project name
project(hsg_1d Fortran)
# Toolchain selection, possible arguments: Intel, gFortran
SET(Toolchain Intel)
# Compiler selection
include(CMakeForceCompiler)
# GNU compilers
if(${Toolchain} MATCHES gFortran)
CMAKE_FORCE_Fortran_COMPILER(gfortran "gfortran")
CMAKE_FORCE_C_COMPILER(gcc "gcc")
CMAKE_FORCE_C_COMPILER(g++ "g++")
endif(${Toolchain} MATCHES gFortran)
# Intel compilers
if(${Toolchain} MATCHES Intel)
CMAKE_FORCE_Fortran_COMPILER(ifort "Intel Fortran Compiler")
set(CMAKE_Fortran_FLAGS "-fpp -heap-arrays -g -O0 -traceback -check bounds ${CMAKE_Fortran_FLAGS}")
CMAKE_FORCE_C_COMPILER(icc "Intel C Compiler")
CMAKE_FORCE_CXX_COMPILER(icpc "Intel C++ Compiler")
endif(${Toolchain} MATCHES Intel)
# Test files
ADD_SUBDIRECTORY(tst)
SET(tst_exec tst_inter_s)
# Source code files
SET(src gaussian.F90
hsg_1d.F90
huygens.F90
init.F90
io.F90
inter.F90
mur.F90
pgm.F90
variables.F90
yee.F90)
# Test executables
ADD_EXECUTABLE(${tst_exec} ${src})
# Main executable
ADD_EXECUTABLE(${PROJECT_NAME} ${src})
CMakeLists.txt,测试目录
# Test files
SET(tst tst_inter_s.F90)
为编译生成标准 Makefile 我:
- 创建一个空的
build目录 - 从
build运行cmake -G 'Unix Makefiles' .. - 键入
make编译目标和测试可执行文件
【问题讨论】:
标签: cmake fortran executable fortran90