尽管 cmake 被称为很好用,但它的文档似乎令人感到不尽如人意(除非我完全未能理解基础知识)。
我正在尝试编写一个 cmake 文件,用于一组 Fortran 程序,并且这些程序还依赖于其他一些库(这些库已经被编译为我的系统,但我也会想为这些库创建 cmake 文件)。
我在网上找到的例子中有许多命令,在官方文档中并没有出现,这有点令人不安。例如,http://www.vtk.org/Wiki/CMakeForFortranExample 中包含以下代码行:
我正在尝试编写一个 cmake 文件,用于一组 Fortran 程序,并且这些程序还依赖于其他一些库(这些库已经被编译为我的系统,但我也会想为这些库创建 cmake 文件)。
我在网上找到的例子中有许多命令,在官方文档中并没有出现,这有点令人不安。例如,http://www.vtk.org/Wiki/CMakeForFortranExample 中包含以下代码行:
get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
然而,当我将这个添加到我的CMakeLists.txt中时,我会收到一个错误。
Missing variable is:
CMAKE_fortran_COMPILER
What am I missing?!
Edit: current CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
enable_language(fortran)
project(fortranTest)
get_filename_component (Fortran_COMPILER_NAME ${CMAKE_Fortran_COMPILER} NAME)
编辑2
我还没有弄清楚如何包含依赖库。
ENABLE_LANGUAGE(Fortran)
了?我们成功地在非常大的Fortran流体动力学代码中使用CMake,并且几乎没有任何问题(与Fortran相关)。 - tpg2114fortran
是小写字母f
,而你的示例行中是大写字母F
。此外,有更好的方法来处理该信息所尝试做的事情,例如使用if(${CMAKE_Fortran_COMPILER_ID} STREQUAL "Intel")
,这样可以保护你,以防可执行文件被命名为奇怪的名称(例如在Cray系统上,它会被包装成ftn
)。 - tpg2114enable_language()
调用中,需要使用Fortran
而不是fortran
。 - tpg2114