我是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(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很陌生,我不知道为什么会收到警告。我还没找到我的"可执行文件"文件。
答案 0 :(得分:1)
重新制定我以前的评论作为答案:
对于混合语言源(CXX,Fortran),CMake使用CXX链接器,因为它的链接器首选项高于Fortran链接器。但由于fortran源中的PROGRAM语句,需要使用Fortran链接器。通过set_property(TARGET executable PROPERTY LINKER_LANGUAGE Fortran)
设置LINKER_LANGUAGE属性为CMake提供了选择正确链接器的提示。