LINUX.ORG.RU

фортран и C++ собрать gcc - ом

 


0

1

Помогите переделать правила сборки так, чтобы собрать проект не ifort-ом, а c++.

main: main.o fortfunct.o cwrapfunct.o
	ifort -nofor_main -o main main.o cwrapfunct.o fortfunct.o
main.o: main.c
	icc -c main.c
cwrapfunct.o: cwrapfunct.c
	icc -c cwrapfunct.c
fortfunct.o: fortfunct.for
	ifort -c fortfunct.for

P.S. нужно перейти на ++

Я не понял, при чём тут C++ (у сишных файлов «расширение» .c, так что подозреваю, что там чистый C). Но предлагаю попробовать:

sed -i -e 's/ifort/gfortran/g;s/icc/gcc/g' Makefile

А ещё можешь в мейкфайле определять дефолтные переменные для компиляторов (для C - это CC обычно, для фортрана хз). И делать примерно так:

CC ?= icc
FC ?= ifort
main: main.o fortfunct.o cwrapfunct.o
	$(FC) -nofor_main -o main main.o cwrapfunct.o fortfunct.o
main.o: main.c
	$(CC) -c main.c
cwrapfunct.o: cwrapfunct.c
	$(CC) -c cwrapfunct.c
fortfunct.o: fortfunct.for
	$(FC) -c fortfunct.for
DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от programmer-it2015

Я, если честно, не знаток фортрана и ключей gfortran, а с ifort совсем не работал. А что это за ключ и что он делает? Может всё-таки есть аналог?

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от DELIRIUM
CC ?= gcc
FC ?= gfortran
main: main.o fortfunct.o cwrapfunct.o
	$(CC) -o main main.o cwrapfunct.o fortfunct.o -lgfortran
main.o: main.c
	$(CC) -c main.c
cwrapfunct.o: cwrapfunct.c
	$(CC) -c cwrapfunct.c
fortfunct.o: fortfunct.for
	$(FC) -c fortfunct.for
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.