混合语言C++;,用Cmake进行C和Fortran编译 < >使用 g++< /> >代码> GCC < /C> >代码> Gfortran < /C> > 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

混合语言C++;,用Cmake进行C和Fortran编译 < >使用 g++< /> >代码> GCC < /C> >代码> Gfortran < /C> > 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,gcc,g++,cmake,gfortran,Gcc,G++,Cmake,Gfortran,为了使这个更跨平台,我想使用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_s

为了使这个更跨平台,我想使用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
下面列出的测试脚本不起作用,只会有选择地编译一些文件

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

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

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

项目(q-test C CXX Fortran)


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

谢谢比尔;这工作得非常好。当使用Cmake时,我的脸上总是挂着大大的笑容,因为它让事情变得容易多了。令人惊讶的是,它能自动找到所需的一切。