如何将CMake用于Fortran和C++;?
我是CMake的新手,似乎很难让我的脚本工作。我的代码可以用通常的方式编译,但我确实需要使用CMake。我用以下资料汇编:如何将CMake用于Fortran和C++;?,cmake,fortran,Cmake,Fortran,我是CMake的新手,似乎很难让我的脚本工作。我的代码可以用通常的方式编译,但我确实需要使用CMake。我用以下资料汇编: 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(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很陌生,我不知道为什么会收到警告。此外,我还没有找到我的“可执行”文件 将我之前的评论重新表述为回答:
对于混合语言源(CXX、Fortran),CMake使用CXX链接器,因为其链接器首选项高于Fortran链接器。但是由于fortran源代码中的程序语句,需要fortran链接器。通过
set\u属性(目标可执行属性LINKER\u LANGUAGE Fortran)
设置LINKER\u LANGUAGE属性会提示CMake选择正确的链接器。怎么了?可执行文件是否未生成?我没有看到任何错误。您是否在询问可执行文件在哪里?您不需要在CMAKE\u Fortran\u标志中使用CMakeFiles/executable/vectc.o
,因为您在add\u executable
步骤中指定了依赖项。我可能是CMAKE的新成员。我不知道为什么我得到了c++:warning:CMakeFiles/executable.dir/vectf.f.o:linker输入文件未使用,因为链接未完成
和其他警告,加上我找不到可执行文件。