使用Cmake进行混合语言C++,C和Fortran编译

Nic*_*nar 4 gcc g++ cmake gfortran

使用g++,gccgfortran在GNU/Linux,我写了一个简单的脚本来编译和链接在一起的一些写在C++,C和Fortran源代码文件.以下是脚本的完整内容.此脚本已经过测试,效果很好.

g++ -c test-Q.cpp -I./boost/boost_1_52_0/ -g
 gcc -c paul2.c -g
 gcc -c paul2_L1.c -g
 gcc -c paul6.c -g
 gcc -c paul6_L1.c -g 
 gcc -c fit_slope.c -g
 gfortran -c getqpf.F -g
 g++ -o test-Q test-Q.o paul2.o paul2_L1.o paul6.o paul6_L1.o fit_slope.o getqpf.o -g -lgfortran
Run Code Online (Sandbox Code Playgroud)

为了使这更加跨平台,我想使用Cmake重新编写脚本.我如何处理混合语言编译?

下面列出的以下测试脚本不起作用,只会选择性地编译一些文件.

是否有另一个跨平台构建过程可能更适合这种类型的编译?

cmake_minimum_required (VERSION 2.6)
project (q-test)

include_directories(/media/RESEARCH/SAS2-version2/test-Q/boost/boost_1_52_0)

add_executable( q-test
test-Q.cpp
paul2.c
paul2_L1.c 
paul6.c 
paul6_L1.c 
fit_slope.c
getqpf.F
) # end
Run Code Online (Sandbox Code Playgroud)

小智 6

您需要为项目启用Fortran,如下所示:

项目(q-test C CXX Fortran)

此外,您可能希望使用find_package(Boost)而不是硬编码包含路径.