LINUX.ORG.RU

Система сборки, user space логирование, cmake

 , ,


0

1

Здравствуйте

Есть приложение, которое собирается cmake-ом. Есть проблемы во время сборки. Хочется увидеть, с какими именно аргументами cmake запускает g++, moc и тд. В отличии от чистого gnu-make у cmake все скрыто тривиальным fancy выводом. Разумеется, cmake генерирует Makefile для gnu-make.

Возможно, есть подходящие параметры для cmake, но хотелось бы чего-то отдельного от cmake, чтобы использовать и в других подобных случаях. Хотелось бы инструмент подобный auditd, только я не смог сделать в нем логирование аргументов запуска программ, если он вообще это умеет. По-моему, не умеет.



Последнее исправление: panzerito (всего исправлений: 2)

Для cmake:

1)make VERBOSE=1 для make генератора

2)ninja -v для ninja генератора

хотя как правило если возникают ошибки сборки и make, и ninja выплёвывают кроме ошибки, ещё и команду при выполнении которой она возникла.

Также для make можно посмотреть в $(build_dir)/$(builded_target)/CMakeFiles/$(builded_target).dir/{build.make, link.txt, etc}

dhampire ★★★
()
Последнее исправление: dhampire (всего исправлений: 1)

А документацию почитать?

cmake && make VERBOSE=1

или

cmake -DCMAKE_VERBOSE_MAKEFILE=1 && make

хотелось бы чего-то отдельного от cmake

Как-то так:

mkdir /auditor && cd /auditor && cat > /auditor/auditor
#!/bin/sh
compiler="$(basename $0)"
echo "$compiler" "$@" >> /tmp/auditor.log
exec "/usr/bin/$compiler" "$@"
^D
chmod 755 /auditor/auditor
for compiler in gcc g++ cc c++ clang clang++ gcc48 g++48; do
    ln /auditor/auditor /auditor/$compiler
done
export PATH=/auditor:$PATH
cmake . && make
slovazap ★★★★★
()
Ответ на: комментарий от panzerito

--debug-output - не то, какая-то крайне скудная инфа о том, как формируются build.make.

panzerito
() автор топика
Ответ на: комментарий от slovazap

С -DCMAKE_VERBOSE_MAKEFILE=1 этап генерации не становится более информативным. Это просто генерация Makefile-ов с VERBOSE=1 по умолчанию.

panzerito
() автор топика
Ответ на: комментарий от panzerito

Короче, в crengine cmake генерирует build/cr3qt/CMakeFiles/cr3.dir/build.make с подобным:

/usr/lib/i386-linux-gnu/qt4/bin/moc @/home/user/crengine/build/cr3qt/src/moc_cr3widget.cxx_parameter

moc вываливается с ошибкой из-за @. Не могу понять, кто его туда вставляет - просмотрел весь небольшой CMakeLists.txt в cr3qt

panzerito
() автор топика
Ответ на: комментарий от panzerito

И в make и в ninja есть dry run: пробежаться по командам, но не выполнять. <make|ninja> -n

Dendy ★★★★★
()
Последнее исправление: Dendy (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.