4

1 つの外部モジュールを使用して Fortran プロジェクトの cmake リストを作成しようとしていますが、どちらも cmake find (findlib) パッケージを持たない外部ライブラリにリンクする必要があります。これまでのところ、私の CMakeLists.txt は次のようになっています。

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 を生成し、メイン プログラムおよび外部ライブラリとリンクできるようにするにはどうすればよいですか? これに相当するのは、mymodule に対して ifort -c を実行し、すべての .o に対して ifort を実行することです。

4

2 に答える 2

0

ファイル libmymodule.a は静的ライブラリであり、 add_library() 関数の STATIC オプションが CMake にそうするように指示するために作成されます。STATIC の代わりに、SHARED を使用して共有ライブラリ libmymodule.so を作成してみてください。ただし、ここで心配している静的ビットかどうかはわかりません。

外部ライブラリに FindLib ファイルが付属していない場合は、自分で簡単に作成できます。CMakeFiles パッケージの FindLibs/ ディレクトリには、特に Fortran プロジェクト用の CMake ファイルの例を提供する多くの例があります: http://cmakefiles.sf.net/

于 2013-03-02T16:24:04.810 に答える
0

のソースがありmymoduleます。mymodule.f90に含めることができますmain-source_SRC。それで十分なはずです。以下が機能することを願っていますが、テストできません。

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})

set(main-source_SRC main-source.f mymodule.f90)
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 externlib) 
于 2013-02-14T21:07:16.143 に答える