2017-06-09 8 views
0

私はCMakeには新しく、スクリプトの作業をするのは本当に難しいようです。私のコードは普通の方法でコンパイルすることができますが、私は本当にCMakeを使う必要があります。私は次のようにコンパイル:私のために動作しませんCMake for FortranとC++の使い方は?

g++ vectc.cpp -c -std=c++11 
gfortran vectf.f vectc.o -lstdc++ 

このCMakeLists.txt、:

cmake_minimum_required (VERSION 2.6) 
project (add_vectors CXX Fortran) 
enable_language(Fortran) 
set(CMAKE_CXX_FLAGS "-c -std=c++11") 
set(CMAKE_Fortran_FLAGS "CMakeFiles/executable/vectc.o -lstdc++") 
add_executable(executable 
vectc.cpp 
vectf.f) 

私は私は、次を得るcmakeの後にmakeを実行し、私は本当に何を知らない場合する:

[ 33%] Linking CXX executable executable 
c++: warning: CMakeFiles/executable.dir/vectf.f.o: linker input file unused because linking not done 
c++: warning: CMakeFiles/executable.dir/vectc.cpp.o: linker input file unused because linking not done 
[100%] Built target executable 

誰でも私を助けることができますか?

編集: コメントは、私はよく尋ねなかった。私はCmakeにはかなり新しく、なぜ私は警告を受けたのかわかりません。また、私は私の "実行可能"ファイルが見つかりませんでした。そのリンカー嗜好は、Fortranリンカーよりも高いので、混合言語ソース(CXX、フォートラン)の場合

CXXリンカーをCMakeので使用される:

+3

どうしたのですか?実行可能ファイルはビルドされていませんか?私はどんな誤りも見ない。 –

+0

実行ファイルがどこにあるのか尋ねていますか? –

+0

'CMAKE_Fortran_FLAGS'に' CMakeFiles/executable/vectc.o'は必要ありません。あなたが 'add_executable'ステップで依存関係を指定するのと同じです。 –

答えて

0

答えとして私の以前のコメント改質。しかし、FortranソースのPROGRAMステートメントのために、Fortranリンカーが必要です。 set_property(TARGET executable PROPERTY LINKER_LANGUAGE Fortran)でLINKER_LANGUAGEプロパティを設定すると、CMakeは正しいリンカを選択するヒントを得ます。

+0

私はこれを見つけられませんでした、ありがとう – link

関連する問題