2012-04-25 200 views
1

我在配備Intel 11.0編譯器的Linux機器上使用CMake 2.8.7。我想第一次使用CMake,因爲我想在Windows和Linux機器上構建這個項目。在ifort編譯器中使用CMake

我先用一個簡單的方法,但並使用標準的Hello World示例: 我的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_FOR缺少TRAN_LINK_EXECUTABLE變量。我看了Abinader's CMake tutorial#1,但到目前爲止還沒有成功。

有什麼建議?提前致謝 !

+0

嗨!你找到了答案嗎?我也有一些與ifort有關的問題,但是使用不同的上下文:Windows。 ;-)看來,CMake對英特爾Fortran編譯器的支持並不是那麼好... :-( – 2012-07-22 19:56:14

回答

0

在設置鏈接器語言時,可能是大寫「FORTRAN」是問題。嘗試將它寫爲「Fortran」,如enable_language語句中所示。 CMake從語言中派生出它使用的變量,這會導致CMake尋找CMAKE_FORTRAN_LINK_EXECUTABLE而不是CMAKE_Fortran_LINK_EXECUTABLE。

+0

我使用了CMAKE_Fortran_LINK_EXECUTABLE,但CMake仍然抱怨。是否需要爲Fortran指定一些標誌? – 2012-04-27 12:26:41

0

不是一個直接的答案,因爲我從來沒有用cmake用fortran,但是我可以在這裏看到一些問題。

首先:您的目標helloworld定義在哪裏? project不是目標。

其次:你在哪裏使用helloworld_SOURCES變量?

嘗試更經常的方法。在你的src /的CMakeLists.txt在文件的與末尾添加一行:

add_executable(helloworld ${helloworld_SOURCES}) 

而且從一個主要去除SET_TARGET_PROPERTIES(helloworld PROPERTIES LINKER_LANGUAGE FORTRAN),因爲它不應該是必要的。

最後的建議:儘量不要使用file(GLOB)。 manualy定義所有文件的列表最好。