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

4

在GNU/Linux系统上使用g++gccgfortran,我编写了一个简单的脚本,用于编译和链接一些用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

为了更好地跨平台,我希望使用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
1个回答

6

您需要像这样为项目启用Fortran:

project (q-test C CXX Fortran)

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


谢谢Bill,这个工具非常好用。每次使用Cmake时我都会面带微笑,因为它让事情变得更加容易。真是太神奇了,它可以自动找到所有需要的东西。 - Nicholas Kinar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接