LINUX.ORG.RU

Как перевести проект с cmake на make?

 , ,


0

2

Необходимо собрать phonon-backend-* под ARM, с cmake я просто отчаялся уже это сделать, можно ли каким то менее полезненным способом перевести проект на ./configure && make?

★★★★★

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

Может всё-таки расскажешь про проблемы с cmake? Только где-то в Development.

Pavval ★★★★★
()

Руки кривы, что ли? Какие могут быть проблемы с cmake?

anonymous
()

Простой ответ: нет, нельзя.

Развёрнутый ответ: да и не стоит.

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

Ну напиши для него руками makefile

Dron ★★★★★
()

У, ты — прямо форменное ССЗБ! Ты еще вручную Makefile напиши, да...

Eddy_Em ☆☆☆☆☆
()

В чем конкретно заключается проблема? Я не так давно собирал этот phonon-backend-gstreamer под ARM и именно использовал cmake. Всё прекрасно собралось с тулчейн-файлом. Быть может, вам стоит попробовать пересобрать библиотеку Qt с необходимыми бэкендами к gstreamer? Это гораздо проще, чем по кусочкам собирать их с помощью различных систем сборок.

Только разрешите все зависимости, а там как раз /configure && make.

EXL ★★★★★
()

Кстати, -phonon -pulseaudio не проще сделать? Нафига эту телегу кривую собирать?

Eddy_Em ☆☆☆☆☆
()

Лог сборки с разрешением всех зависимостей, если нужно:

// Дополнительные файлы

sdk-prefix-configure.sh:

#!/bin/sh
./configure --host=arm-qemu-linux-gnueabi --prefix=/home/exl/SandBox/QEMU_arm/arm-sdk/ $* \
        CFLAGS="-I/home/exl/SandBox/QEMU_arm/arm-sdk/include -I/home/exl/SandBox/QEMU_arm/arm-sdk/usr/include -I/home/exl/SandBox/QEMU_arm/arm-sdk/usr/local/include" \
        CPPFLAGS="-I/home/exl/SandBox/QEMU_arm/arm-sdk/include -I/home/exl/SandBox/QEMU_arm/arm-sdk/usr/include -I/home/exl/SandBox/QEMU_arm/arm-sdk/usr/local/include" \
        LDFLAGS="-L/home/exl/SandBox/QEMU_arm/arm-sdk/lib -L/home/exl/SandBox/QEMU_arm/arm-sdk/usr/lib -L/home/exl/SandBox/QEMU_arm/arm-sdk/usr/local/lib"

arm_toolchain.cmake:

# this one is important
SET(CMAKE_SYSTEM_NAME Linux)
#this one not so much
SET(CMAKE_SYSTEM_VERSION 1)

# specify the cross compiler
SET(CMAKE_C_COMPILER   /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-gcc)
SET(CMAKE_CXX_COMPILER /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-g++)

# where is the target environment
SET(CMAKE_FIND_ROOT_PATH  /home/exl/SandBox/QEMU_arm/arm-sdk/)

# search for programs in the build host directories
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf:

#
# qmake configuration for building with arm-qemu-linux-gnueabi-g++
#

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)

# modifications to g++.conf
QMAKE_CC                = /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-gcc
QMAKE_CXX               = /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-g++
QMAKE_LINK              = /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-g++

QMAKE_CFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/include
QMAKE_CFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/include/glib-2.0
QMAKE_CFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/lib/glib-2.0/include
QMAKE_CFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/include/gstreamer-0.10

QMAKE_CXXFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/include
QMAKE_CXXFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/include/glib-2.0
QMAKE_CXXFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/lib/glib-2.0/include
QMAKE_CXXFLAGS		+= -I/home/exl/SandBox/QEMU_arm/arm-sdk/include/gstreamer-0.10

QMAKE_LIBS		+= -lglib-2.0 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lxml2 -lffi -lz
QMAKE_LFLAGS		+= -L/home/exl/SandBox/QEMU_arm/arm-sdk/lib

# modifications to linux.conf
QMAKE_AR                = /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-objcopy
QMAKE_STRIP             = /home/exl/x-tools/arm-qemu-linux-gnueabi/bin/arm-qemu-linux-gnueabi-strip

load(qt_config)

Зависимости:

libffi-3.0.13:

sdk-prefix-configure.sh 
make -j3
make install

glib-2.38.2:

sdk-prefix-configure.sh glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=no ac_cv_func_nonposix_getpwuid_r=no ac_cv_func_posix_getgrgid_r=no ac_cv_func_nonposix_getgrgid_r=no --enable-shared=yes
make -j3
make install

libxml2-2.9.1:

sdk-prefix-configure.sh --without-python
make -j3
make install

phonon-4.7.1:

cmake -DCMAKE_TOOLCHAIN_FILE=../../arm_toolchain.cmake -DCMAKE_INSTALL_PREFIX=/home/exl/SandBox/QEMU_arm/arm-sdk/ -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_LIBDIR=lib -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE
make VERBOSE=1
make install

libogg-1.3.1:

sdk-prefix-configure.sh
make -j3
make install

alsa-lib-1.0.27.2:

sdk-prefix-configure.sh
make -j3
make install

libvorbis-1.3.4:

sdk-prefix-configure.sh
make -j3
make install

flac-1.3.0:

sdk-prefix-configure.sh
make -j3
make install

gst-plugins-base-0.10.36:

sdk-prefix-configure.sh
make -j3
make install

gst-plugins-good-0.10.31:

sdk-prefix-configure.sh
make -j3
vim sys/v4l2/gstv4l2bufferpool.c
make
vim sys/v4l2/v4l2_calls.c
make install

gst-plugins-ugly-0.10.19:

sdk-prefix-configure.sh
make -j3
make install

Непосредственно, сам phonon-backend-gstreamer-4.7.1:

cmake -DCMAKE_TOOLCHAIN_FILE=../../arm_toolchain.cmake -DCMAKE_INSTALL_PREFIX=/home/exl/SandBox/QEMU_arm/arm-sdk/ -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_BUILD_TYPE=Release --build ../phonon-backend-gstreamer-4.7.1
vim gstreamer/videowidget.cpp
make -j3
make install

Непосредственно, Qt 4.8.5 с phonon/gstreamer без всяких внешних зависимостей в виде phonon-4.7.1 или phonon-backend-gstreamer-4.7.1:

mkdir ../../arm-sdk/include/phonon-old && mv ../../arm-sdk/include/phonon ../../arm-sdk/include/phonon-old
mkdir ../../arm-sdk/lib/old-libraries && mv ../../arm-sdk/lib/libQt* ../../arm-sdk/lib/libphon* ../../arm-sdk/lib/old-libraries
./configure -opensource -confirm-license -little-endian -host-little-endian -qt-gfx-transformed -embedded arm-gnueabi -nomake examples -nomake demos -nomake docs -fast -no-webkit -no-javascript-jit -no-script -no-scripttools -no-declarative -no-declarative-debug -glib -phonon -phonon-backend -no-gtkstyle -prefix /home/exl/SandBox/QEMU_arm/arm-sdk/
make -j3
make install

EXL ★★★★★
()
Ответ на: комментарий от EXL
set(CMAKE_SYSTEM_MAKE Linux)
set(CMAKE_SYSTEM_VERSION 1)
set(CMAKE_C_COMPILER /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux/bin/arm-linux-gnueabihf-gcc)
set(CMAKE_CXX_COMPILER /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux/bin/arm-linux-gnueabihf-g++)
set(CMAKE_AR /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux/bin/arm-linux-gnueabihf-ar)
set(CMAKE_AS /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux/bin/arm-linux-gnueabihf-as)
set(CMAKE_CPP /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux/bin/arm-linux-gnueabihf-cpp)
set(CMAKE_LD /opt/gcc-linaro-arm-linux-gnueabihf-4.7-2012.12-20121214_linux/bin/arm-linux-gnueabihf-ld)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
set(CMAKE_FIND_ROOT_PATH_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_INCLUDE ONLY)
bash-4.2$ make
[  1%] Automoc for target QtGLib
[  1%] Built target QtGLib_automoc
[  2%] Building CXX object src/QGlib/CMakeFiles/QtGLib.dir/quark.cpp.o
In file included from /mnt/filestore/boiler4/tarboll/qt-gstreamer-0.10.3/src/QGlib/quark.h:22:0,
                 from /mnt/filestore/boiler4/tarboll/qt-gstreamer-0.10.3/src/QGlib/quark.cpp:19:
/mnt/filestore/boiler4/tarboll/qt-gstreamer-0.10.3/src/QGlib/global.h:26:28: фатальная ошибка: boost/config.hpp: Нет такого файла или каталога
компиляция прервана.
make[2]: *** [src/QGlib/CMakeFiles/QtGLib.dir/quark.cpp.o] Ошибка 1
make[1]: *** [src/QGlib/CMakeFiles/QtGLib.dir/all] Ошибка 2
make: *** [all] Ошибка 2

нафига бэкэнду boost?

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

Определись, что ты собираешь, qt-gstreamer или phonon-backend-gstreamer, это как бы разные вещи. Нафига qt-gstreamer'у boost - я не знаю.

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