LINUX.ORG.RU
ФорумTalks

[/Dev] cmake не создает Makefile в текущей директории


0

1

Привет всем. Есть программа, использующая cmake для конфигурации исходников. Даны следующие опции для cmake:

BUILDDIR = builddir

CMAKEOPTS = -DCMAKE_BUILD_TYPE=RelWithDebInfo \
            -DCMAKE_INSTALL_PREFIX=/usr \
            -DUSE_MINIUPNP=ON -DLOCAL_MINIUPNP=ON \
            -DLUA_SCRIPT=ON -DWITH_LUASCRIPTS=ON \
            -DPERL_REGEX=ON -DWITH_DHT=ON \
            -DWITH_SOUNDS=ON \
            -DUSE_QT=ON \
            -DUSE_ASPELL=ON -DFREE_SPACE_BAR_C=ON -DUSE_JS=ON \
            -DUSE_QT_SQLITE=ON \
            -DCREATE_MO=ON -DUPDATE_PO=OFF \
            -DNO_UI_DAEMON=ON \
            -DXMLRPC_DAEMON=OFF \
            ../

configure: configure-stamp
configure-stamp:
	dh_testdir
	mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && cmake $(CMAKEOPTS)
	touch $@
build: configure build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp:
	dh_testdir
	cd $(BUILDDIR) && $(MAKE) -j$(NUMJOBS)
	touch $@

При этом должно происходить перемещение в builddir и в ней должен появиться Makefile. Но он появляется уровнем выше, соответственно make не отрабатывает. ЧЯДНТ?

Всем спасибо.

//Знаю, что не тот раздел, но видимо на выходных в /Dev никто не заходит.

расскажи что значат все во эти строки

configure: configure-stamp
configure-stamp:
	dh_testdir
	mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && cmake $(CMAKEOPTS)
	touch $@
build: configure build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp:
	dh_testdir
	cd $(BUILDDIR) && $(MAKE) -j$(NUMJOBS)
	touch $@

откуда это и зачем?

при сборке с помощью cmake стандартной практикой считается создание отдельного каталога и выполнение в нем команды cmake, с указанием путей до исходников, затем в этом же каталоге происходит сборка. То что описано выше с созданием отдельного каталога в скрипте cmake(?) и перемещение туда мейкфайла выглядит просто костылями от того кто cmake ни разу не использовал

HighwayStar ★★★★★
()

опять же вывод выполнения этого безобразия приведи

HighwayStar ★★★★★
()

Вы бы сразу сказали, что что это кусок файла debian/rules для сборки пакета, было бы понятнее.

Попробуйте перед mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && cmake $(CMAKEOPTS) в той же строке написать «set -x; », авось что-то интересное увидите.

AITap ★★★★★
()
Ответ на: комментарий от AITap
den@ubuntu:~/src/eiskaltdcpp-2.2.6$ dpkg-buildpackage -rfakeroot
dpkg-buildpackage: установка CFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CPPFLAGS в значение по умолчанию: 
dpkg-buildpackage: установка LDFLAGS в значение по умолчанию: -Wl,-Bsymbolic-functions
dpkg-buildpackage: установка FFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CXXFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: пакет исходных текстов eiskaltdcpp
dpkg-buildpackage: версия исходных текстов 2.2.6
dpkg-buildpackage: исходные тексты изменены Kirill Shkrogalev <den@ubuntu>
dpkg-buildpackage: архитектура хоста i386
 fakeroot debian/rules clean
dh_testdir
dh_testroot
[ ! -f ../CMakefiles/Makefile2 ] || ( cd builddir && /usr/bin/make clean )
test ! -d builddir || rm -r builddir
dh_clean
 dpkg-source -b eiskaltdcpp-2.2.6
dpkg-source: инфо: используется формат исходника `3.0 (quilt)'
dpkg-source: инфо: сборка eiskaltdcpp с использованием существующего ./eiskaltdcpp_2.2.6.orig.tar.gz
dpkg-source: инфо: локальные изменения сохранены в eiskaltdcpp-2.2.6/debian/patches/debian-changes-2.2.6, изменённые файлы:
 eiskaltdcpp-2.2.6/CMakeCache.txt
dpkg-source: инфо: сборка eiskaltdcpp в eiskaltdcpp_2.2.6.debian.tar.gz
dpkg-source: инфо: сборка eiskaltdcpp в eiskaltdcpp_2.2.6.dsc
 debian/rules build
dh_testdir
mkdir -p builddir && cd builddir && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr -DUSE_MINIUPNP=ON -DLOCAL_MINIUPNP=ON -DLUA_SCRIPT=ON -DWITH_LUASCRIPTS=ON -DPERL_REGEX=ON -DWITH_DHT=ON -DWITH_SOUNDS=ON -DUSE_QT=ON -DUSE_ASPELL=ON -DFREE_SPACE_BAR_C=ON -DUSE_JS=ON -DUSE_QT_SQLITE=ON -DCREATE_MO=ON -DUPDATE_PO=OFF -DNO_UI_DAEMON=ON -DXMLRPC_DAEMON=OFF -DCMAKE_BUILD_DIR=BUILDDIR ../
CMake Warning at CMakeLists.txt:59 (find_package):
  Could not find module FindGit.cmake or a configuration file for package
  Git.

  Adjust CMAKE_MODULE_PATH to find FindGit.cmake or set Git_DIR to the
  directory containing a CMake configuration file for Git.  The file will
  have one of the following names:

    GitConfig.cmake
    git-config.cmake



-- Building with Lua scripts support
-- Building with UPNP support (miniupnpc)
-- Building with Aspell support
-- Building with free space bar (realisation on C, POSIX 1003.1-2001 (and later) with XSI)
-- Library directory: /usr/lib
-- Data directory: /usr/share/eiskaltdcpp
-- Translations: be;bg;cs;de;el;en;es;fr;hu;it;pl;ru;sr@latin;sk;uk
-- Building without Qt Declarative UI support
-- Building with Qt DBus support
-- Building with Qt Script support
-- Building with Qt SQLite support
-- Building without LibGnome2 support
-- Building with libnotify support
-- CMAKE_SYSTEM: Linux-2.6.32-38-generic
-- CMAKE_SYSTEM_NAME: Linux
-- CMAKE_SYSTEM_PROCESSOR: i686
-- CMAKE_SYSTEM_VERSION: 2.6.32-38-generic
-- CMAKE_CXX_COMPILER_ID: GNU
-- CMAKE_C_COMPILER_ID: GNU
-- CMAKE will use this libs (and headers) during build:

                miniupnpc (headers):miniupnpc (/home/den/src/eiskaltdcpp-2.2.6/upnp)
                lua (headers): /usr/lib/liblua5.1.so;/usr/lib/libm.so (/usr/include/lua5.1)
                boost (headers):  (/usr/include)
                bzip2 (headers): /usr/lib/libbz2.so (/usr/include)
                zlib (headers): /usr/lib/libz.so (/usr/include)
                openssl (headers): /usr/lib/libssl.so;/usr/lib/libcrypto.so (/usr/include)
                iconv (headers): /usr/lib/libc.so (/usr/include)
                aspell (headers): /usr/lib/libaspell.so (/usr/include)
                gettext (headers):  (/usr/include)
                pcre(cpp) (headers): /usr/lib/libpcre.so;/usr/lib/libpcrecpp.so (/usr/include)
                idna (headers): /usr/lib/libidn.so (/usr/include)

                
-- Configuring done
-- Generating done
-- Build files have been written to: /home/den/src/eiskaltdcpp-2.2.6
touch configure-stamp
dh_testdir
cd builddir && /usr/bin/make -j1
make[1]: Вход в каталог `/home/den/src/eiskaltdcpp-2.2.6/builddir'
make[1]: *** Не заданы цели и не найден make-файл.  Останов.
make[1]: Выход из каталога `/home/den/src/eiskaltdcpp-2.2.6/builddir'
make: *** [build-stamp] Ошибка 2
dpkg-buildpackage: ошибка: debian/rules build возвратил код ошибки 2
den@ubuntu:~/src/eiskaltdcpp-2.2.6$ 
LongLiveUbuntu ★★★★★
() автор топика

Попробуйте добавить в CMAKEOPTS

-G "Unix Makefiles"

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

Тогда стоит попробовать оставить стандартный debian/rules от debhelper с этим include.

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

Попробуйте так:

#!/bin/make -f

DEB_CMAKE_EXTRA_FLAGS = -DCMAKE_BUILD_TYPE=RelWithDebInfo \
            -DCMAKE_INSTALL_PREFIX=/usr \
            -DUSE_MINIUPNP=ON -DLOCAL_MINIUPNP=ON \
            -DLUA_SCRIPT=ON -DWITH_LUASCRIPTS=ON \
            -DPERL_REGEX=ON -DWITH_DHT=ON \
            -DWITH_SOUNDS=ON \
            -DUSE_QT=ON \
            -DUSE_ASPELL=ON -DFREE_SPACE_BAR_C=ON -DUSE_JS=ON \
            -DUSE_QT_SQLITE=ON \
            -DCREATE_MO=ON -DUPDATE_PO=OFF \
            -DNO_UI_DAEMON=ON \
            -DXMLRPC_DAEMON=OFF \
            ../

include /usr/share/cdbs/1/class/cmake.mk

%:
 dh $@

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

BUILDDIR определен выше.

Полный debian/rules:

#!/usr/bin/make -f

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
endif

ifeq (,$(NUMJOBS))
	NUMJOBS = 1
endif

BUILDDIR = builddir

CMAKEOPTS = -DCMAKE_BUILD_TYPE=RelWithDebInfo \
            -DCMAKE_INSTALL_PREFIX=/usr \
            -DUSE_MINIUPNP=ON -DLOCAL_MINIUPNP=ON \
            -DLUA_SCRIPT=ON -DWITH_LUASCRIPTS=ON \
            -DPERL_REGEX=ON -DWITH_DHT=ON \
            -DWITH_SOUNDS=ON \
            -DUSE_QT=ON \
            -DUSE_ASPELL=ON -DFREE_SPACE_BAR_C=ON -DUSE_JS=ON \
            -DUSE_QT_SQLITE=ON \
            -DCREATE_MO=ON -DUPDATE_PO=OFF \
            -DNO_UI_DAEMON=ON \
            -DXMLRPC_DAEMON=OFF \
	    -DCMAKE_BUILD_DIR=BUILDDIR \
            ../

# This option is for daily builds of the EiskaltDC++ packages on Launchpad
# See https://launchpad.net/~tehnick/+archive/tehnick for more information
#REVISION = $(shell /bin/sh -c "head -n 1 debian/changelog | sed -e 's/^.*-[0-9]\{6,6\}-//' -e 's/-0ppa.*$$//'")
#CMAKEOPTS += -DDCPP_REVISION="$(REVISION)"


configure: configure-stamp
configure-stamp:
	dh_testdir
	mkdir -p $(BUILDDIR) && cd $(BUILDDIR) && cmake $(CMAKEOPTS)
	touch $@
build: configure build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp:
	dh_testdir
	cd $(BUILDDIR) && $(MAKE) -j$(NUMJOBS)
	touch $@
clean: do-clean
do-clean:
	dh_testdir
	dh_testroot
	[ ! -f ../CMakefiles/Makefile2 ] || ( cd $(BUILDDIR) && $(MAKE) clean )
	test ! -d $(BUILDDIR) || rm -r $(BUILDDIR)
	dh_clean
install: build
	dh_testdir
	dh_testroot
	dh_prep
	dh_installdirs
	cd $(BUILDDIR) && $(MAKE) install DESTDIR=$(CURDIR)/debian/tmp
binary-indep: build install
	dh_testdir -i
	dh_testroot -i
	dh_movefiles -i
	dh_installdocs -i
	dh_installchangelogs -i ChangeLog.txt
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_installdebconf -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i
binary-arch: build install
	dh_testdir -a
	dh_testroot -a
	dh_movefiles -a
	dh_installchangelogs -a ChangeLog.txt
	dh_installdocs -a
	dh_installman -a
	dh_link -a
	dh_strip -Nlibeiskaltdcpp2.2 -Neiskaltdcpp-qt -Neiskaltdcpp-gtk -Neiskaltdcpp-daemon
	dh_strip -plibeiskaltdcpp2.2 --dbg-package=libeiskaltdcpp2.2-dbg
	dh_strip -peiskaltdcpp-qt --dbg-package=eiskaltdcpp-qt-dbg
	dh_strip -peiskaltdcpp-gtk --dbg-package=eiskaltdcpp-gtk-dbg
	dh_strip -peiskaltdcpp-daemon --dbg-package=eiskaltdcpp-daemon-dbg
	dh_compress -a
	dh_fixperms -a
	dh_makeshlibs -plibeiskaltdcpp2.2
	dh_installdeb -a
	dh_shlibdeps -a -ldebian/libeiskaltdcpp2.2/usr/lib
	dh_installdebconf -a
	dh_gencontrol -a
	dh_md5sums -a
	dh_builddeb -a
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure patch unpatch do-clean

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

в репозитории technik'а версия 2.2.5 лежит, она тоже собирается

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