Russian Qt Forum

Qt => Вопросы новичков => Тема начата: alik от Июнь 25, 2016, 18:39



Название: no rule to make target
Отправлено: alik от Июнь 25, 2016, 18:39
Добрый день,

У меня есть основное приложение с набором хедеров и cpp файлов.
Создал второе приложение, которое должно использовать уже готовые файлы .h и .cpp, расположенные в папке первой программы.
Смысл заключается в том, что там описаны общие для обоих приложений типы данных, функции и классы и мне нужно использовать их в обоих приложениях.
Это кажется мне логичным, чтобы не делать 2 копии одних и тех жех второстепенных файлов.
Но при попытке компиляции второго приложения компилятор выдал мне ошибку:

8:31:49: Running steps for project compilator...
18:31:49: Configuration unchanged, skipping qmake step.
18:31:49: Starting: "/usr/bin/make"
make: *** No rule to make target 'Global/Container.cpp', needed by 'Container.o'.  Stop.
18:31:49: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project compilator (kit: Desktop Qt 5.2.0 GCC 64bit)
When executing step 'Make'
18:31:49: Elapsed time: 00:00.


Здесь Global/Container.cpp и Global/Container.h это как раз один из таких файлов, который я использую в обоих приложениях.
В pro файле я подключил директорию, где находится папка Global:

INCLUDEPATH += "../myfirstprogram"

Помогите плиз разобраться, что не так !



Название: Re: no rule to make target
Отправлено: Old от Июнь 25, 2016, 18:53
Смысл заключается в том, что там описаны общие для обоих приложений типы данных, функции и классы и мне нужно использовать их в обоих приложениях.
Это кажется мне логичным, чтобы не делать 2 копии одних и тех жех второстепенных файлов.
Именно для этого придумали библиотеки. Хотите статические, но лучше динамические.

А что бы разобраться с вашей бедой покажите ваши pro файлы и дерево ваших проектов.


Название: Re: no rule to make target
Отправлено: alik от Июнь 25, 2016, 19:24
Смысл заключается в том, что там описаны общие для обоих приложений типы данных, функции и классы и мне нужно использовать их в обоих приложениях.
Это кажется мне логичным, чтобы не делать 2 копии одних и тех жех второстепенных файлов.
Именно для этого придумали библиотеки. Хотите статические, но лучше динамические.

А что бы разобраться с вашей бедой покажите ваши pro файлы.

Проект № 1:

TARGET = asumrl
TEMPLATE = app

win32: LIBS += -L$$PWD/Packing/bzip2 -lbz2
unix: LIBS += -lbz2

SOURCES += main.cpp\
        mainwindow.cpp \
    about.cpp \
    map.cpp \
    settings.cpp \
    terrainshader.cpp \
    verticalsection.cpp \
    listobserv.cpp \
    Global/arrays.cpp \
    GIS/gis.cpp \
    GIS/dem_srtm.cpp \
    Algorithms/algs_files.cpp \
    Algorithms/algs_common.cpp \
    Algorithms/algs_geo.cpp \
    Algorithms/algs_math.cpp \
    Algorithms/algs_cloudparams.cpp \
    GIS/esrishapes.cpp \
    Import/satellite.cpp \
    Global/calctables.cpp \
    Global/radarsinfo.cpp \
    Global/repers.cpp \
    Global/volumescan.cpp \
    Algorithms/algs_contours.cpp \
    Global/container.cpp \
    Global/config.cpp \
    Export/email.cpp \
    Interfaces/comport.cpp \
    Algorithms/meteostation.cpp \
    Log/log_work.cpp \
    Packing/compress.cpp \
    Global/data_transport.cpp \
    Export/reports.cpp

HEADERS  += mainwindow.h \
    about.h \
    map.h \
    settings.h \
    terrainshader.h \
    verticalsection.h \
    listobserv.h \
    Global/arrays.h \
    Global/types.h \
    Global/constants.h \
    Global/strings.h \
    GIS/gis.h \
    GIS/dem_srtm.h \
    Algorithms/algs_files.h \
    Algorithms/algs_common.h \
    Algorithms/algs_geo.h \
    Algorithms/algs_math.h \
    Algorithms/algs_cloudparams.h \
    GIS/esrishapes.h \
    Import/satellite.h \
    Global/calctables.h \
    Global/radarsinfo.h \
    Global/repers.h \
    Global/volumescan.h \
    Algorithms/algs_contours.h \
    Global/container.h \
    Global/config.h \
    Export/email.h \
    Interfaces/comport.h \
    Algorithms/meteostation.h \
    Log/log_work.h \
    Global/data_transport.h \
    Global/types_slave.h \
    Packing/compress.h \
    Packing/bzlib.h \
    Export/reports.h


FORMS    += mainwindow.ui \
    about.ui \
    map.ui \
    settings.ui \
    terrainshader.ui \
    verticalsection.ui \
    listobserv.ui

RESOURCES += \
    asumrl.qrc


Проект № 2:
#-------------------------------------------------
#
# Project created by QtCreator 2015-09-15T14:11:49
#
#-------------------------------------------------

QT       += core gui

QT       += printsupport

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = compilator
TEMPLATE = app

INCLUDEPATH += "../asumrl"

SOURCES += main.cpp\
        mainwindow.cpp \
        Global/Container.cpp

HEADERS  += mainwindow.h \
        Global/Container.h


FORMS    += mainwindow.ui

RESOURCES += \
    compilator.qrc


Название: Re: no rule to make target
Отправлено: Old от Июнь 25, 2016, 20:23
Файлы этих двух проектов находятся в одной директории?

Почему во втором проекте путь к Global такой же как и у первого?


Название: Re: no rule to make target
Отправлено: alik от Июнь 25, 2016, 21:00
Файлы этих двух проектов находятся в одной директории?

Почему во втором проекте путь к Global такой же как и у первого?
Нет первый проект находится в
/home/Yandex.Disk/Projects/ASU-MRL/QT/asumrl

Второй проект в
/home/Yandex.Disk/Projects/ASU-MRL/QT/compilator

Я думуал, что включив директорию в pro файле второго проекта ( INCLUDEPATH += "../asumrl" ), все должно быть корректно с путями !?


Название: Re: no rule to make target
Отправлено: Old от Июнь 25, 2016, 21:10
Я думуал, что включив директорию в pro файле второго проекта ( INCLUDEPATH += "../asumrl" ), все должно быть корректно с путями !?
Нет. Эта деректива говорит компилятору где искать исключительно файлы для #include.
Указывайте корректный путь к файлу.


Название: Re: no rule to make target
Отправлено: alik от Июнь 25, 2016, 21:23
Я думуал, что включив директорию в pro файле второго проекта ( INCLUDEPATH += "../asumrl" ), все должно быть корректно с путями !?
Нет. Эта деректива говорит компилятору где искать исключительно файлы для #include.
Указывайте корректный путь к файлу.

Указал расположение файлов через  ../asumrl и проект стал компилироваться

SOURCES += main.cpp\
        mainwindow.cpp \
        ../asumrl/Global/Container.cpp \
        ../asumrl/Global/arrays.cpp

Спасибо!


Название: Re: no rule to make target
Отправлено: kambala от Июнь 25, 2016, 21:47
хранить проекты на ЯД/дропбоксе/пр. — плохая идея. системы контроля версий не просто так придумали.


Название: Re: no rule to make target
Отправлено: alik от Июнь 26, 2016, 22:30
хранить проекты на ЯД/дропбоксе/пр. — плохая идея. системы контроля версий не просто так придумали.

А какую можете порекемендовать оболочку?
Соприкосался с системой GitHub, вообщем то неплохо, но может есть попроще что то.


Название: Re: no rule to make target
Отправлено: kambala от Июнь 26, 2016, 23:42
проще, чем git, разве что mercurial (svn рекомендовать не буду). но и то — для базового использования гит крайне простой, тем более что есть и гуи-клиенты, и даже поддержка в креатор встроена.

GitHub — это сервер, а не сама СКВ.


Название: Re: no rule to make target
Отправлено: Bepec от Июнь 27, 2016, 00:03
В принципе для "чайника", все простые. commit и update, больше ничего не надо.

С красивым гуи - Tortoise SVN.
С глобальным халявным и публичным освещением твоих исходников - Git.


Название: Re: no rule to make target
Отправлено: kambala от Июнь 27, 2016, 00:13
С красивым гуи - Tortoise SVN.
ничего другого не видел, да?
С глобальным халявным и публичным освещением твоих исходников - Git.
про битбакет не слышал, да?


Название: Re: no rule to make target
Отправлено: Bepec от Июнь 27, 2016, 03:11
Видел. клиент для гита. Видел. клиент для меркурия. Но самый красивый и удобный Tortoise. Это моё мнение :)
Слышал что то про битбакет. Но не интересовался и не пользовался :) Незачем.


Название: Re: no rule to make target
Отправлено: Racheengel от Июнь 27, 2016, 09:12
А что с svn не так? Фирма пользуется ей уже лет 8, все работает, интуитивно понятный клиент (tortoise), есть бранчи и пр.
Github клиент какой-то, пожалуй, слишком перемудренный. Не все в нем очевидно.
Tortoise git получше будет.


Название: Re: no rule to make target
Отправлено: gil9red от Июнь 27, 2016, 09:22
А что с svn не так? Фирма пользуется ей уже лет 8, все работает, интуитивно понятный клиент (tortoise), есть бранчи и пр.
Github клиент какой-то, пожалуй, слишком перемудренный. Не все в нем очевидно.
Tortoise git получше будет.

Аналогично :) У нас тоже все на svn находится.
Мне не понравился git в Qt Creator'е -- неудобный, особенно после гита в PyCharm'е, поэтому перешел на консольный в коробке гита -- git bash :)
Первые 3 дня запоминал команды :)
Раньше, консольный гит использовал только для получения репозитория -- git clone :)


Название: Re: no rule to make target
Отправлено: kambala от Июнь 27, 2016, 12:55
Видел. клиент для гита. Видел. клиент для меркурия. Но самый красивый и удобный Tortoise. Это моё мнение :)
видел один клиент, сделал вывод про все сразу — прям мастер дедукции
Слышал что то про битбакет. Но не интересовался и не пользовался :) Незачем.
ну вот поинтересуйся, чтоб в будущем бред всякий не писать с видом знатока
А что с svn не так? Фирма пользуется ей уже лет 8, все работает, интуитивно понятный клиент (tortoise), есть бранчи и пр.
мне в свн не нравится, что создается целая копия активной ветки при tag/branch, а также нельзя просто взять и удалить папку из файловой системы. и историю нельзя без инета просматривать.
Github клиент какой-то, пожалуй, слишком перемудренный. Не все в нем очевидно.
Tortoise git получше будет.
а я ни тем, ни тем никогда и не пользовался :) SourceTree использую, очень хороший на мой взгляд. ну и из командной строки периодически.


Название: Re: no rule to make target
Отправлено: Racheengel от Июнь 27, 2016, 13:39
мне в свн не нравится, что создается целая копия активной ветки при tag/branch, а также нельзя просто взять и удалить папку из файловой системы. и историю нельзя без инета просматривать.

Папку точно можно удалить. Просто потом надо commit обязательно сделать.

А история без инета работает только для локального свн-сервера, но это ж и логично вроде, не? :)


Название: Re: no rule to make target
Отправлено: Bepec от Июнь 27, 2016, 13:55
kambala не кипятись) Человек спрашивает мнение людей, и это моё мнение :D


Название: Re: no rule to make target
Отправлено: kambala от Июнь 27, 2016, 14:14
мне в свн не нравится, что создается целая копия активной ветки при tag/branch, а также нельзя просто взять и удалить папку из файловой системы. и историю нельзя без инета просматривать.

Папку точно можно удалить. Просто потом надо commit обязательно сделать.

А история без инета работает только для локального свн-сервера, но это ж и логично вроде, не? :)

я помню, было очень много проблем с удалением папки — приходилось ревертить все изменения и очень аккуратно удалять папку (как-то так), но может это проблема лишь Cornerstone клиента.

ну гит хранит всю историю локально, где бы ни находился сервер :)
kambala не кипятись) Человек спрашивает мнение людей, и это моё мнение :D
свое мнение надо уточнять словами «мне кажется», «я считаю» и т.п.


Название: Re: no rule to make target
Отправлено: Bepec от Июнь 27, 2016, 18:38
Не свистите. Всё что я пишу является лишь моим мнением, основанным на моих впечатлениях и знаниях. Или вы скажете, что всё написанно вами без слов «мне кажется», «я считаю», является истиной в последней инстанции? :D


Название: Re: no rule to make target
Отправлено: kambala от Июнь 27, 2016, 20:43
я не делаю уверенных утверждений типа таких
С глобальным халявным и публичным освещением твоих исходников - Git.


Название: Re: no rule to make target
Отправлено: alik от Июнь 27, 2016, 22:29
Действительно с Яндекс.Диском могут возникать опасные ситуации. Особенно когда размер виртуального диска достаточно большой, а скорость интернета на какой-либо машине маленькая. При этом могут происходить самые непредсказуемые вещи, от удаления файлов, до их размножения с цифровыми суффиксами.
Любая оболочка типа git (или аналог) будет безопасней.


Название: Re: no rule to make target
Отправлено: Bepec от Июнь 27, 2016, 22:57
"С глобальным халявным и публичным освещением твоих исходников - Git. "
Разберём что я сказал не так.

Итак у Git имеется самый большой ГЛОБАЛЬНЫЙ и разрекламированный ХАЛЯВНЫЙ сервис для ПУБЛИЧНОГО освещения своих исходников. Я неправ? :)
Я его не ругаю, нет - это его преимущество, ибо для svn чего то подобного я не знаю.
PS просто слово "сервис" не легло на бумагу клавиатуру, а осталось на уме :)


Название: Re: no rule to make target
Отправлено: Racheengel от Июнь 28, 2016, 01:40
Цитировать
ибо для svn чего то подобного я не знаю.

sourceforge :)


Название: Re: no rule to make target
Отправлено: Old от Июнь 28, 2016, 06:16
"С глобальным халявным и публичным освещением твоих исходников - Git. "
Разберём что я сказал не так.

Итак у Git имеется самый большой ГЛОБАЛЬНЫЙ и разрекламированный ХАЛЯВНЫЙ сервис для ПУБЛИЧНОГО освещения своих исходников. Я неправ? :)
Я его не ругаю, нет - это его преимущество, ибо для svn чего то подобного я не знаю.
PS просто слово "сервис" не легло на бумагу клавиатуру, а осталось на уме :)
Вы путаете git и github. Это разные вещи, совсем разные.


Название: Re: no rule to make target
Отправлено: Bepec от Июнь 28, 2016, 12:00
Old вы видимо до PS не дочитали :)

Ммм... sourceForge на svn. Никогда не замечал :)


Название: Re: no rule to make target
Отправлено: Old от Июнь 28, 2016, 12:16
Old вы видимо до PS не дочитали :)
Дочитал.


Название: Re: no rule to make target
Отправлено: kambala от Июнь 28, 2016, 14:42
"С глобальным халявным и публичным освещением твоих исходников - Git. "
Разберём что я сказал не так.

Итак у Git имеется самый большой ГЛОБАЛЬНЫЙ и разрекламированный ХАЛЯВНЫЙ сервис для ПУБЛИЧНОГО освещения своих исходников. Я неправ? :)
Я его не ругаю, нет - это его преимущество, ибо для svn чего то подобного я не знаю.
PS просто слово "сервис" не легло на бумагу клавиатуру, а осталось на уме :)
Вы путаете git и github. Это разные вещи, совсем разные.
this

в общем, верес в очередной раз сел в лужу, и теперь пытается оправдаться. дальше опять пойдут отшучивания.