2012-11-19 53 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時,我總是會有一個燦爛的笑容,因爲它讓事情變得更容易。驚人的如何自動找到所需的一切。 –