Re: Как отлаживают скрипты сборки С++ -проекта?
От: koenjihyakkei Россия  
Дата: 07.04.23 12:20
Оценка: 17 (3) +2
Здравствуйте, Shmj, Вы писали:

Смотрю на сообщения об ошибках от cmake и исправляю если ошибка понятна. Иначе дебажу с помощью логов — функция message().

Еще в Clion вроде как завезли поддержку дебага cmake, но я пока не пользовался.
Re[2]: Как отлаживают скрипты сборки С++ -проекта?
От: Shmj Ниоткуда  
Дата: 07.04.23 13:39
Оценка: +2 :)
Здравствуйте, Chorkov, Вы писали:

C>Мне сильно помогло, написание CI скриптов сборки.

C>Т.е. скрипт должен писаться так, чтобы не компилировать/ликовать файлы, если они уже созданы и имеют правильную дату модификации, то не переделывать.
C>Тогда, до точки предыдущего провала доходим за 5 минут, и печаль не возникает.


Я понял что больше всего в жизни я боюсь этих скриптов. С++ при всей своей монструозности не так страшен. А вот это дерьмо, когда половина на python, может быть еще часть на perl, где-то cmake, где-то еще какие-то системы сборки и оно как то все состыкуется в одну большую какаху — это
Re: Как отлаживают скрипты сборки С++ -проекта?
От: Chorkov Россия  
Дата: 07.04.23 08:42
Оценка: 4 (1) +1
Здравствуйте, Shmj, Вы писали:

S>Такой вопрос. Вот есть 20 кб. скриптов сборки. Запуск занимает 4 часа.


S>В процессе запуска возникают ошибки, но процесс не останавливается. Потом в конце останавливается — не может найти какой-то CMake-файл (их там много).


S>Был ли у вас опыт отладки таких скриптов и как лучше подходить к вопросу? Где взять оптимизм?


Мне сильно помогло, написание CI скриптов сборки.
Т.е. скрипт должен писаться так, чтобы не компилировать/ликовать файлы, если они уже созданы и имеют правильную дату модификации, то не переделывать.
Тогда, до точки предыдущего провала доходим за 5 минут, и печаль не возникает.

Полная пересборка, с ноля запускается только в полночь.

Как я понимаю, make/nmake/cmake/qmake умеют это из коробки.

CI от полной пересборки отличается только тем, что:
1) (Не)Удяляем временные папки и папки со старыми исходникам.
2) вместо git clone делаем git pull
Re[2]: Как отлаживают скрипты сборки С++ -проекта?
От: _NN_ www.nemerleweb.com
Дата: 20.04.23 19:12
Оценка: 1 (1)
Здравствуйте, koenjihyakkei, Вы писали:

K>Еще в Clion вроде как завезли поддержку дебага cmake, но я пока не пользовался.


В Visual Studio завезли тоже:
CMake debugger allows you to debug your CMake scripts and more
http://rsdn.nemerleweb.com
http://nemerleweb.com
Как отлаживают скрипты сборки С++ -проекта?
От: Shmj Ниоткуда  
Дата: 07.04.23 08:09
Оценка:
Такой вопрос. Вот есть 20 кб. скриптов сборки. Запуск занимает 4 часа.

В процессе запуска возникают ошибки, но процесс не останавливается. Потом в конце останавливается — не может найти какой-то CMake-файл (их там много).

Был ли у вас опыт отладки таких скриптов и как лучше подходить к вопросу? Где взять оптимизм?
Re[2]: Как отлаживают скрипты сборки С++ -проекта?
От: SaZ  
Дата: 07.04.23 15:00
Оценка:
Здравствуйте, koenjihyakkei, Вы писали:

K>Здравствуйте, Shmj, Вы писали:


K>Смотрю на сообщения об ошибках от cmake и исправляю если ошибка понятна. Иначе дебажу с помощью логов — функция message().


K>...


Я себе вот такой враппер поверх message написал:
# Trace a list of variables
# If variable doesn't exist it will be treated as a text
# If variable is a single value it will be shown as VAR = VALUE
# If variable is an array it will be shown as a list VAR = [ val1, val2, ... ]
# Usage:  echo(<var1> <var2>...)
function(echo)
    # Long prefixes are required to avoid vars name conflicts
    foreach (ds_echo_arg ${ARGV})
        set(ds_echo_name ${ds_echo_arg})
        set(ds_echo_value ${${ds_echo_arg}})
        list(LENGTH ds_echo_value ds_echo_count)
        if (NOT DEFINED ${ds_echo_name})
            message(STATUS "${ds_echo_name}")
        elseif (${ds_echo_count} LESS 2)
            message(STATUS "${ds_echo_name} = ${ds_echo_value}")
        else ()
            string(JOIN ", " ds_echo_text ${ds_echo_value})
            set(ds_echo_text "[ ${ds_echo_text} ]")
            message(STATUS "${ds_echo_name} = ${ds_echo_text}")
        endif ()
    endforeach ()
endfunction()


А сейчас потиху осваиваю отладку в CLion. Вроде работает.
Re: Как отлаживают скрипты сборки С++ -проекта?
От: flаt  
Дата: 21.04.23 21:20
Оценка:
Здравствуйте, Shmj, Вы писали:

S>Был ли у вас опыт отладки таких скриптов и как лучше подходить к вопросу? Где взять оптимизм?


Смени работу и не мучайся с копролитом.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.