Среди бесплатных IDE для языка Fortran можно использовать несколько приложений. Самый простой из них в использовании, особенно для начинающих, наверное, Code::Blocks, в котором проще всего создать проект. Помимо него возможность работы с проектами на Fortran имеют
- Eclipse - используется компонент «Photran» из «Eclipse for Parallel Application Developers», на вид имеет хороший список инструментов;
- Netbeans - создаётся как проект C/С++;
- Oracle Developer Studio - для скачивания требует регистрации.
Если кто имеет опыт работы в них, будет интересно более подробно о них узнать, особенно о возможностях и инструментах, которые понравились. Может ещё какие бесплатные IDE стоит отметить, о которых я не упомянул.
Долго я смотрел на vscode и не мог решиться его на чём-нибудь попробовать. В итоге решил посмотреть, есть ли в нём возможность работы с проектами на Fortran.
Пока только настроил: кусок на скриншоте писал в Kate, остальное попробую дописать в vscode. Просто класс для разбора формата базы термодинамических данных в формате NASA 7, с последующим запихиванием всего в массив структур (название, компонентный состав, коэффициенты полинома). Только начал переписывать этот же класс с C++ (ранее написанный), поэтому пока есть только чтение коэффициентов для текущего компонента, без чтения имени и элементного состава и использования этих компонентов для вычисления того, для чего они предназначены.
Для примера, кусок кода со скриншота на C++ выглядит примерно так:
if ( (str.length() >= 80) && (str.substr(1, 1) != "!") && (str.substr(79, 1) == "2") ) {
for(int i = 0; i < 5; ++i) {
Sp_tmp.coef.push_back( std::stod(str.substr(i*15, 15)) );
}
}
Настройка
Прежде всего, после скачивания с оф. сайта архива code-stable-code_1.17.0-1507160143_amd64.tar.gz, его распаковки в нужный мне домашний каталог и первого запуска, я отключил передачу «телеметрии» (но это не отключает передачу «телеметрии» расширениями):
«File - Preferences - Settings: [Crtl + ,]» поиск «telemetry» и для параметров «telemetry.enableTelemetry» и «telemetry.enableCrashReporter» выставил значения «false».
Для языка Fortran для VSCode есть 3 расширения (2 из них от одного автора, просто разных версий). Наиболее интересным и полезным в данном случае является расширение «Modern Fortran 0.6.0». Оно обеспечивает
- подстветку синтаксиса;
- вставку шаблонов блоков кода (code snippets);
- всплывающие подсказки по документации для встроенных функций;
- анализ кода на присутствие возможных ошибок с помощью gfortran (code linting);
- автодополнение кода (в стадии beta).
Установить его можно через поиск дополнений или командой
Ctrl+P : ext install linter-gfortran
Для отладки приложений понадобится установить расширение С/C++ (cpptools)
Ctrl+P: ext install cpptools
Дальнейшая настройка большей частью основана на статье по настройке окружения для расширения C/С++.
Создадим tasks «build debug» и «build release» (Task - Configure Task) на основе шаблона «other task», приведя исходный шаблон, например, к виду (в том числе для того, чтобы запускать их потом из группы задач посредством Ctrl+Shift+B или F5 т.к. это действие всё равно будет вызывать по умолчанию):
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"taskName": "build debug",
"type": "shell",
"command": "make debug",
"group": {
"kind": "build",
"isDefault": true
}
}
{
"taskName": "build release",
"type": "shell",
"command": "make all",
"group": {
"kind": "build",
"isDefault": false
}
}
]
}
Здесь можно было либо явно указывать что собирать (как в примере из руководства), либо использовать make или cmake. Содержимое Makefile для проекта из файлов main.f95, species.f95:
# On the base of: http://genius2k.is-programmer.com/posts/40301.html
# Start of the makefile
# Defining variables
objects = species.o main.o
f95comp = gfortran
switch = -Wall -O2
# Makefile
all: executable
executable: $(objects)
$(f95comp) -o a.out $(switch) $(objects)
class_species.mod: species.o species.f95
$(f95comp) -c $(switch) species.f95
species.o: species.f95
$(f95comp) -c $(switch) species.f95
main.o: class_species.mod main.f95
$(f95comp) -c $(switch) main.f95
%.o: %.f95
$(f95comp) -c $(switch) $<
debug: switch = -g -Wall
debug: executable
# Cleaning everything
clean:
rm species.mod
rm $(objects)
# End of the makefile
На вкладке Debug нажмём иконку настроек и приведём файл launch.json к виду:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/a.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build debug"
}
]
}
По умолчанию, для исходных текстов на языке фортран (и других не поддерживаемых) не будет работать расстановка breakpoits. Чтобы исправить это, можно зайти в настройки «File - Preferences - Settings::» и найти File -> Preferences -> Settings -> Debug присвоив параметру «debug.allowBreakpointsEverywhere» значение «true».
К сожалению, cpptools при отладке пока не умеет работать со встроенным в vscode терминалом и умеет выводить данные только в xterm (его видно в нижней части экрана на скриншоте) или gnome terminal.
Всё, теперь при нажатии F5 будут пересобираться файлы проекта и запускаться отладка. К сожалению, примерно так же настраивать придётся для каждого нового проекта.
>>> Просмотр (1680x1050, 259 Kb)