我目前正在研究一些专为跨平台使用而设计的CMake构建脚本。然而,它们在窗户下并不完美。
隔离的测试用例如下所示:初始化fortran项目。 CMake总是试图使用' ifort'从Visual Studio作为编译器,但我甚至没有安装。相反,我想使用MingW的gfortran(在我的%PATH%变量中设置)。
凌乱(因为我尝试了很多东西:) CMakeLists.txt看起来像这样:
cmake_minimum_required( VERSION 2.8.12 )
message( "-- env(fc): $ENV{FC}")
message( "-- cmake generator fc: ${CMAKE_GENERATOR_FC}")
set(FC "gfortran" CACHE PATH "" FORCE)
set(CMAKE_GENERATOR_FC "gfortran" CACHE PATH "" FORCE)
set(CMAKE_Fortran_COMPILER_INIT "gfortran" CACHE PATH "" FORCE)
set(CMAKE_Fortran_COMPILER_LIST "gfortran" CACHE PATH "" FORCE)
set(ENV{FC} "gfortran" CACHE PATH "" FORCE)
set(CMAKE_Fortran_COMPILER "gfortran" CACHE STRING "" FORCE)
SET(CMAKE_Fortran_COMPILER_ENV_VAR "FC")
project( example Fortran )
# why does this always print ifort instead of gfortran?
message("-- fortran compiler ${CMAKE_Fortran_COMPILER} ")
include(CheckLanguage)
check_language(Fortran)
if(CMAKE_Fortran_COMPILER)
enable_language(Fortran)
else()
message(STATUS "No native Fortran support ")
endif()
所以对我来说,没有一个选项可以从ifort切换到gfortran。输出始终相同:
cmake -G "Visual Studio 9 2008" ..
-- env(fc):
-- cmake generator fc: gfortran
-- Check for working Fortran compiler using: Visual Studio 9 2008 -- broken
-> fails: "The Fortran compiler ifort is not able to compile a simple test program."
也许周围有人可以向我解释这个问题。 CMake文档无法帮助我,也无需谷歌搜索数小时。
如果您需要进一步的系统信息,请与我们联系。
提前致谢!