commit e20b3c526f4b8253ab2f3b904b0b77a1d0d52a69 Author: Alexander_KS Date: Thu Sep 14 13:50:37 2023 +0000 Добавить Компиляция и запуск проекта. diff --git a/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md b/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md new file mode 100644 index 0000000..3571977 --- /dev/null +++ b/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F-%D0%B8-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA-%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0..md @@ -0,0 +1,20 @@ +SAPFOR для фортрана использует внутреннее представление исходного кода на фортране, основанное на библиотеке SAGE++, которая написана на С++ (высокоуровневый интерфейс) и С (низкоуровневая реализация). Данная библиотека используется в компиляторе Fortran-DVMH. Поэтому, чтобы не копировать проект компилятора, я использовал относительные пути для того, чтобы использовать эту библиотеку в данном проекте. Для того, чтобы выгрузить и собрать SAPFOR, необходимо сделать git clone текущего репозитория, чтобы каталоги соответствовали следующей структуре: + +- **dvmhrepo**\dvm\fdvm\trunk\ +- **dvmhrepo**\sapfor\experts\Sapfor_2017\ + +В случае использования Windows (7 или выше) необходимо, чтобы каталоги **dvm** и **sapfor** лежали в одной папке и, желательно, обладали такой же структурой, как приведена выше, потому что под эту структуру настроены относительные пути в CMakeList по умолчанию (для смены путей необходимо модифицировать paths.txt). Для простоты использования рекомендуется выгрузить полностью каталоги dvmhrepo\dvm и dvmhrepo\sapfor в одну папку. В дальнейшем будет проще обновлять репозиторий. + +Для создания проекта необходимо использовать **CMAKE GUI** (загрузить по [ссылке](https://cmake.org/)) для Windows (7 и выше) или CMAKE в UNIX. Основной файл CMakeList.txt находится в каталоге **dvmhrepo**\sapfor\experts\Sapfor_2017. Если структура каталогов иначе, чем предложена выше, то необходимо скопировать **paths.default.txt** в **paths.txt** и изменить значения путей на соответствующие. Проект лучше создавать в отдельной папке, например, **_bin**. Для сборки под линукс необходимо из этого каталога выполнить команду **cmake** ../ и затем **make -j**. + +Для Windows необходимо запустить установленный CMAKE GUI, далее настроить каталог, где находится CMakeList.txt и выходной каталог проекта, куда будет собран проект. Затем выбрать Configure и Generate. Проект можно создавать под ту IDE, которая нравится, но рекомендуется Visual Studio 2019 и выше. + +В случае успешной сборки проекта, в каталоге проекта появится исполняемый файл: **Sapfor_F.exe**. Для запуска необходимо сделать следующее: запустить парсер (Sapfor_F.exe -parse) на исходном коде на фортране, добавив флаг -spf, который включает директивы SAPFOR !\$SPF в коде программы, а также можно добавить флаг **-lgstd**, который говорит о том, что надо игнорировать !DVM\$ директивы в коде программы. Тогда запуск парсера будет выглядеть, например, так: + +`Sapfor_F -parse -spf jac.f (или Sapfor_F -parse -spf -lgstd jac.f) ` + +После этого создастся проект **dvm.proj** и **jac.dep** файлы. Файл **dvm.proj** является текстовым и содержит список *.dep файлов (бинарные файлы), из которых состоит проект программы. В данном случае в файле dvm.proj будет только один файл jac.dep. Чтобы добавить к проекту еще один файл, необходимо к флагам парсера добавить **-a dvm.proj**. Парсер работает с каждым файлом по отдельности, то есть для многофайлового проекта необходимо вызвать парсер для каждого файла отдельно. Последние версии Sapfor_F поддерживают обработку нескольких файлов, а также простых масок, например, *.f90. + +Для запуска SAPFOR необходим файл проекта **dvm.proj** и ***.dep** файлы. По умолчанию SAPFOR берет dvm.proj файл и начинает работу, либо надо указать с помощью опции имя файла вместо dvm.proj, в котором будет список *.dep файлов. Получить список всех опций (фаз или проходов анализа SAPFOR) можно либо по **-help**, либо просто запустив SAPFOR без параметров. Например, запуск прохода, который выполняет распараллеливание программы от и до, будет выглядеть так: + +`Sapfor -t 13 ` \ No newline at end of file