LINUX.ORG.RU

cmake выхлоп make

 , ,


0

1

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

execute_process(COMMAND /bin/bash -c "make" WORKING_DIRECTORY ${krnl_dir}/src)

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

Как включить отображение выхлопа make только для одного проекта? make VERBOSE=1 не срабатывает

★★★★★
Ответ на: комментарий от MikeDM
execute_process(COMMAND /bin/bash -c "make 1> ${krnl_dir}/src/log" WORKING_DIRECTORY ${krnl_dir}/src)
execute_process(COMMAND /bin/bash -c "make " 1> ${krnl_dir}/src/log WORKING_DIRECTORY ${krnl_dir}/src)

файл после сборки пустой

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

Так выхлоп есть, но

1. Ядро собирается с помощью определения add_custom_target и скрипта mkkernel.cmake в корневом CMakeLists.txt

2. При установке этой переменной во всех проектах при сборке начинает сыпаться куча сообщений о действиях сборки. При сборке ядра с этим можно смириться, но проектов больше 10, и это конкретно отвлекает.

3. При установке переменой в скрипте mkkenel.cmake никакого эффекта нет

false ★★★★★
() автор топика

Всё должно быть видно, если OUTPUT_* переменные не указаны в execute_process. Как вызывается mkkernel.cmake, с помощью чего-то такого?

add_custom_target(build_kernel ALL
    COMMAND ${CMAKE_COMMAND} -E mkkernel.cmake)

Зачем вообще нужен mkkernel.cmake, если там ровно одна команда, или таки там чего-то больше?

И да, «/bin/bash -c» лишнее, можно просто вызывать «make», хотя очевидно причина отсутствия выхлопа в чём-то другом.

Dendy ★★★★★
()
Ответ на: комментарий от anonymous

Сборка проектов на cmake, автоматизация же.

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

Там набор команд для патчинга, сборки и формирования ядра в нужном каталоге, make там основная команда и выполняется примерно в середине скрипта, целиком привести его не могу, извините.

вызывается примерно так:

add_custom_target(kernel
                             COMMAND cmake -D blabla
                                                          -D blabla
                                                           -P ${CMAKE_HOME_DIRECTORY}/scripts/mkkernel.cmake)

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

а

set(CMAKE_VERBOSE_MAKEFILE ON)

Либо не срабатывает вовсе, либо срабатывает сразу для всех проектов.

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

Что если запустить cmake -P mkkernel.cmake руками, вывод печатается? Если указать OUTPUT_VARIABLE или OUTPUT_FILE, появляется ли вывод в переменной/файле?

If OUTPUT_QUIET or ERROR_QUIET is given then the standard output or standard error results will be quietly ignored.

Не уверен, но может эти переменные как-то переопределяются внутри execute_process(), или на выхлоп влияет что-то ещё. Я бы почитал/поотлаживал исходники самого cmake для execute_process(), благо они простые.

Dendy ★★★★★
()
Ответ на: комментарий от Dendy

Если вручную вызвать cmake -P mkkernel.cmake, то всё ок, выхлоп есть

false ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.