3

Intel 11.0 コンパイラを搭載した Linux マシンで CMake 2.8.7 を使用しています。Windows と Linux の両方のマシンでこのプロジェクトをビルドしたいので、初めて CMake を使用しようとしています。

最初に単純なアプローチを使用することを考え、標準の Hello World の例を使用しました: My src/HelloWorld.f90:

!Test helloworld in Fortran using Cmake
program hello
    print *, "Hello World!"
end program hello

私のメイン CMakeLists.txt:

# States that CMake required version must be greater than 2.8.7
cmake_minimum_required(VERSION 2.8.7)
enable_language (Fortran)
project(helloworld Fortran)
add_subdirectory(src)
SET_TARGET_PROPERTIES(helloworld PROPERTIES LINKER_LANGUAGE FORTRAN)

私のsrc/CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.7)

# Include the directory itself as a path to include directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# For a large number of source files you can create it in a simpler way
# using file() function:
file(GLOB helloworld_SOURCES *.f90)

CMAKE_FORTRAN_LINK_EXECUTABLE 変数が見つからないというエラーがまだ表示されます。Abinader の CMake チュートリアル#1を見ましたが、これまでのところ成功していません。

助言がありますか??前もって感謝します !

4

4 に答える 4

1

cmakeでfortranを使用したことがないため、直接的な答えではありませんが、ここでいくつかの問題を見ることができます。

まず第一に、あなたのターゲットはどこにhelloworld定義されていますか? projectは対象外です。

helloworld_SOURCES第二に、どこで変数を使用しますか?

より規則的な方法を試してください。src/CMakeLists.txt で、ファイルの最後に次の行を追加します。

add_executable(helloworld ${helloworld_SOURCES})

また、SET_TARGET_PROPERTIES(helloworld PROPERTIES LINKER_LANGUAGE FORTRAN)必要ないはずなので、メインのものから削除します。

最後のアドバイス: を使用しないようにしてくださいfile(GLOB )。すべてのファイルのリストを手動で定義することをお勧めします。

于 2015-01-30T08:01:32.210 に答える
0

おそらく大文字の「FORTRAN」で、リンカ言語の設定が問題です。enable_language文のように「Fortran」と書いてみてください。CMake は使用する変数を言語から派生させるため、CMake は CMAKE_Fortran_LINK_EXECUTABLE ではなく CMAKE_FORTRAN_LINK_EXECUTABLE を検索します。

于 2012-04-26T06:57:24.847 に答える