2012-11-19 122 views
4

使用g++,在GNU/Linux gccgfortran,我写了一个简单的脚本来编译和链接在一起的一些写在C++,C和Fortran源代码文件。这里是脚本的完整内容。该脚本已经过测试,并且运行良好。混合语言C++,C和Fortran编译与CMake的

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 

回答

6

您需要启用Fortran的项目是这样的:

项目(Q-检验C CXX的Fortran)

此外,您可能需要使用find_package(升压),而不是硬编码包含路径。

+0

谢谢比尔;这工作非常好。使用Cmake时,我总是会有一个灿烂的笑容,因为它让事情变得更容易。惊人的如何自动找到所需的一切。 –