我想写一个cmake列表为我的Fortran项目与一个外部模块,并且都必须与外部库没有任何cmake查找(findlib )包。到目前为止,我的CMakeLists.txt看起来是这样的:cmake for Fortran程序与模块和外部库
cmake_minimum_required (VERSION 2.6)
project (Project 1)
enable_language (C Fortran)
set(extern_INCLUDE /home/path/lib/libdir/include/)
set(extern_LIB /home/path/lib/libdir/lib)
include_directories(${extern_INCLUDE})
link_directories (${extern_LIB})
add_library(mymodule STATIC mymodule.f90)
set(main-source_SRC main-source.f)
add_executable(main-source ${main-source_SRC})
#the name of the external library located in /home/path/lib/libdir/lib is libexternlib.so
target_link_libraries(main-source mymodule externlib)
一个libmymodule.a创建和绝对不是必要的(或共享一个为此事)。我不想生成它们。我怎样才能避免它的产生,并仍然编译mymodule,生成.o和.mod以便能够与主程序和外部库链接?相当于ifort -c mymodule和ifort to all .o。
谢谢,但它抱怨说它无法找到main-source/usr/bin/ld:找不到-lmymodule。 – Ivan 2013-02-14 21:14:07
对不起,但我没有进一步的想法。但是你尝试设置(CMAKE_VERBOSE_MAKEFILE“开”)。这将打印执行进一步调试的命令。 – Holger 2013-02-14 21:30:20
我认为这会出错,因为Fortran模块与包含文件不同。您应该可以通过将'include_directories'和外部模块作为'$ {extern_INCLUDE}/mymodule.f90'包含在可执行文件中来修复它。 – sigma 2013-02-17 22:56:59