Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Makefile error2

Друзья, у меня вылезла ошибка makefile error2, не смог с ней разобраться и переустановил весь Qt. через 2 дня она снова вылезла. Была у кого подобная проблема? Как ее решить?

P.S. Скачивал с официального сайта
Ответ:
Код
21:47:58: Выполняются этапы для проекта Project5...
21:47:58: Запускается: «C:\Qt\5.7\mingw53_32\bin\qmake.exe» \\mac\Home\Documents\Projects\Project5\Project5.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug"
"\\mac\Home\Documents\Projects\Project5"
“Є § **л© Їгвм Ўл« ЁбЇ®«м§®ў * ЇаЁ § ЇгбЄҐ CMD.EXE ў Є зҐб⢥ ⥪г饩 Ї ЇЄЁ.
CMD.EXE *Ґ Ї®¤¤Ґа¦Ёў Ґв ЇгвЁ UNC. Џ® 㬮«з *Ёо ўлЎа *  бЁб⥬* п Ї ЇЄ  Windows.
"\\Mac\Home\Documents\build-Project5-Desktop_Qt_5_7_0_MinGW_32bit-Debug"
CMD.EXE *Ґ Ї®¤¤Ґа¦Ёў Ґв ЇгвЁ UNC ў Є зҐб⢥ ⥪г饩 Ї ЇЄЁ.
"\\mac\Home\Documents\Projects\Project5"
“Є § **л© Їгвм Ўл« ЁбЇ®«м§®ў * ЇаЁ § ЇгбЄҐ CMD.EXE ў Є зҐб⢥ ⥪г饩 Ї ЇЄЁ.
CMD.EXE *Ґ Ї®¤¤Ґа¦Ёў Ґв ЇгвЁ UNC. Џ® 㬮«з *Ёо ўлЎа *  бЁб⥬* п Ї ЇЄ  Windows.
"\\Mac\Home\Documents\build-Project5-Desktop_Qt_5_7_0_MinGW_32bit-Debug"
CMD.EXE *Ґ Ї®¤¤Ґа¦Ёў Ґв ЇгвЁ UNC ў Є зҐб⢥ ⥪г饩 Ї ЇЄЁ.
21:47:59: Процесс «C:\Qt\5.7\mingw53_32\bin\qmake.exe» завершился успешно.
21:47:59: Запускается: «C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe» qmake_all
C:\Qt\5.7\mingw53_32\bin\qmake.exe -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug" -o Makefile ..\..\..\..\mac\Home\Documents\Projects\Project5\Project5.pro
Cannot find file: ..\..\..\..\mac\Home\Documents\Projects\Project5\Project5.pro.
Makefile:212: recipe for target 'Makefile' failed
mingw32-make: *** [Makefile] Error 2
21:47:59: Процесс «C:\Qt\Tools\mingw530_32\bin\mingw32-make.exe» завершился с кодом 2.
Ошибка при сборке/установке проекта Project5 (комплект: Desktop Qt 5.7.0 MinGW 32bit)
Во время выполнения этапа «qmake»
21:47:59: Прошло времени: 00:01.

P.S. Спасибо!
Вопрос: Проект с всякими Makefile в кодеблок

Как правильно проект с разными Makefile открыть и компилировать в кодеблок?
Ответ: Спасибо! Попробую!

Добавлено через 20 минут
Нужен таки Makefile с каким нибудь расширением или нет, просто так Makefile?
Makefile без расширений засунуты только кое где в дальние дальние папки..
Makefile с расширениями только чуть чуть не больше чем скажем .cpp файлов.
Вопрос: Неправильный Makefile

Здравствуйте!
Пытаюсь сделать Makefile, но выдает ошибку:
Кликните здесь для просмотра всего текста
../obj/EasyGL.cpp
make: ../obj/EasyGL.cpp: Command not found
make: *** [all] Error 127


Вот сам файл:
Кликните здесь для просмотра всего текста
CC=gcc
CFLAGS=-c -o
LDFLAGS=-lGL

#All source file with mask "*.c", "*.cpp"
SOURCES=$(wildcard *.c) $(wildcard *.cpp)

#Object file directory
OBJDIR=../obj

#Object files
OBJECTS=$(patsubst %,$(OBJDIR)/%,$(SOURCES))

%.*: $(SDIR)/%.o
$(CC) $(CFLAGS) $< $@

all:
$(OBJECTS)


Мне просто нужно, чтобы он собрал объектные файлы для всех исходных и сохранил их в папке ../obj.
Кто знает, объясните, пожалуйста, что я не так делаю?
P.S.: Makefile раньше не использовал
P.S.S. не знаю по какой стиль языка его отнести для выставки тегов, надеюсь модераторы подправят... Заранее спасибо!

Добавлено через 59 минут
Немного переделал, но все равно не работает
Кликните здесь для просмотра всего текста
Код Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
CC=gcc
CFLAGS=-c -o
LDFLAGS=-lGL
 
#All source file with mask "*.c", "*.cpp"
SOURCES=$(wildcard *.c) $(wildcard *.cpp)
 
#Object file directory
OBJDIR=../obj
 
#Object files
OBJECTS=$(patsubst %.cpp,$(OBJDIR)/%.o,$(SOURCES))
 
$(OBJDIR)/%.o: %.cpp
    $(CC) $(CFLAGS) $(LDFLAGS) $@ $<
 
all:
    $(OBJECTS)
Ответ:
Сообщение от HighPredator
Чисто рекомендация: попробуйте собрать без вайлдкардов и прочей магии. Если соберется, то потом по шагам, и внимательно куря ман, заменяйте.
Простой makefile и с дикими картами) у меня работает - магии там нет никакой, просто список всех файлов по маске получаю, без wildcard *.cpp может восприняться как файл

Добавлено через 2 минуты
Решил использовать CMake - реально проще и кроссплатформенная генерация, в общем, для моих нужд вполне достаточно) Хотя сейчас пытаюсь с генерацией под Android разобраться
Вопрос: Компиляция Makefile в c++

Коллеги подскажите, столкнулся с проблемой. В нацденных мной примерах ничего по таким проблемам не сказано, к сожалению в гугле тоже не нашел доступного для новичка объяснения.

Необходимо скомпилить с помощью g++ Makefile . Есть 3 файла: ConsoleApplication1.cpp tools.cpp и tools.h .

ConsoleApp.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
п»ї#include "Pch.h"
#include<iostream>
#include<stack>
#include<string>
#include <fstream>
#include "tools.h"
 
using namespace std;
int main()
{
    string s  =Func();
    stack<char> b;
    for (auto c : s) {
        if (!b.empty() && ((c == ')') && (b.top() == '(')) ||
            ((c == ']') && (b.top() == '[')) ||
            ((c == '}') && (b.top() == '{'))) {
            b.pop();
        }
        else if (c == ')' || c == ']' || c == '}') {
            cout << "Not correct";
            return 0;
        }
        else {
            b.push(c);
        }
    }
    b.empty() ? cout << "AllRight" : cout << "Not correct";
 
    return 0;
 
}
tools.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "tools.h"
string Func()
{   
cout << "Enter the path to file\n";
    string path;
    cin >> path;
    string s;
    std::ifstream in(path); 
    std::cout << s << std::endl;
    cout << s << "(length: " << s.length() << ")" << std::endl;
    in.close();
    return s;
}
tools.h
C++
1
string Func()
С g++ до этого не работал( Как бороться?
Возникает следующего рода ошибка:
In file included from ConsoleApplication1.cpp:6:0:
tools.h:1:1: error: ‘string’ does not name a type
string Func()
^~~~~~
ConsoleApplication1.cpp: In function ‘int main()’:
ConsoleApplication1.cpp:11:2: error: ‘string’ was not declared in this scope
string s =Func();
^~~~~~
ConsoleApplication1.cpp:11:2: note: suggested alternatives:
In file included from /usr/include/c++/6/iosfwd:39:0,
from /usr/include/c++/6/ios:38,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from ConsoleApplication1.cpp:2:
/usr/include/c++/6/bits/stringfwd.h:74:33: note: ‘std::__cxx11::string’
typedef basic_string<char> string;
^~~~~~
/usr/include/c++/6/bits/stringfwd.h:74:33: note: ‘std::__cxx11::string’
ConsoleApplication1.cpp:12:2: error: ‘stack’ was not declared in this scope
stack<char> b;
^~~~~
ConsoleApplication1.cpp:12:2: note: suggested alternative:
In file included from /usr/include/c++/6/stack:61:0,
from ConsoleApplication1.cpp:3:
/usr/include/c++/6/bits/stl_stack.h:99:11: note: ‘std::stack’
class stack
^~~~~
ConsoleApplication1.cpp:12:8: error: expected primary-expression before ‘char’
stack<char> b;
^~~~
ConsoleApplication1.cpp:13:16: error: ‘s’ was not declared in this scope
for (auto c : s) {
^
ConsoleApplication1.cpp:14:8: error: ‘b’ was not declared in this scope
if (!b.empty() && ((c == ')') && (b.top() == '(')) ||
^
ConsoleApplication1.cpp:20:4: error: ‘cout’ was not declared in this scope
cout << "Not correct";
^~~~
ConsoleApplication1.cpp:20:4: note: suggested alternative:
In file included from ConsoleApplication1.cpp:2:0:
/usr/include/c++/6/iostream:61:18: note: ‘std::cout’
extern ostream cout; /// Linked to standard output
^~~~
ConsoleApplication1.cpp:27:2: error: ‘b’ was not declared in this scope
b.empty() ? cout << "AllRight" : cout << "Not correct";
^
ConsoleApplication1.cpp:27:14: error: ‘cout’ was not declared in this scope
b.empty() ? cout << "AllRight" : cout << "Not correct";
^~~~
ConsoleApplication1.cpp:27:14: note: suggested alternative:
In file included from ConsoleApplication1.cpp:2:0:
/usr/include/c++/6/iostream:61:18: note: ‘std::cout’
extern ostream cout; /// Linked to standard output
^~~~
In file included from tools.cpp:1:0:
tools.h:1:1: error: ‘string’ does not name a type
string Func()
^~~~~~
Ответ:
Сообщение от andreas96
Правильно ли я понимаю, что данной командой g++ ConsoleApplication1.cpp tools.cpp -o Programm
мною был создан MAkefile?
Зависит от того, как вы эту команду используете. Если вводите непосредственно, то нет. Должен быть создан файл Makefile с определенным содержимым. Для сборки программы вызывается команда make (с параметрами или без, в зависимости от содержимого файла).

Добавлено через 5 минут
Пример для вашей программы:
Код
all: ConsoleApplication1.o tools.o
	g++ -o Programm ConsoleApplication1.o tools.o

ConsoleApplication1.o: ConsoleApplication1.cpp tools.h
	g++ -c ConsoleApplication1.cpp

tools.o: tools.cpp tools.h
	g++ -c tools.cpp

clean:
	rm -f *.o Programm
Команда make выполнит сборку, команда make clean выполнит удаление созданных при сборке файлов. Подробнее читайте .
Вопрос: Ошибка в Makefile

Проект на несколько файлов, поэтому решил написать makefile. Нашел шаблон и немного его видоизменил под свои нужды:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CC=icc
CFLAGS=-c -Wall
LDFLAGS= -std=c99 -fopenmp -ls -O3
SOURCES=main.c simple_omp.c hard_omp.c func.h
OBJECTS=$(SOURCES:.c=.o .h=.o)
EXECUTABLE=main.x
 
all: $(SOURCES) $(EXECUTABLE)
    
$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@
 
.c.o:
    $(CC) $(CFLAGS) -o $@ $<
При запуске (командой "make all") получаю сообщение что в 14 строке пропущен разделитель.
Ответ:
Сообщение от VergilYamato
Это какая-то особая магия
Это не магия. Символ табуляции является особым символом для Makefile'а
Вопрос: Makefile

А что такое Makefile(ну тот который делает qmake.exe)? Что он из себя представляет? Из чего формируется и для чего служит?
Ответ: yura91, Да. У вас много-много исходников вашей программы, плюс могут быть дополнительно подключенные библиотеки в проект и прочее добро. В Makefile описываются правила по компилированию этого всего
Вопрос: Создать makefile для сборки java программы

Создать makefile со следующими целями:
- очистка (clean) - удаление промежуточных файлов
- построение (build) – перекомпиляция всех классов и создание исполняемого jar-архива
- запуск (run) – запуск на выполнение jar-архива

Может кто-нибудь посоветует какую-нибудь литературу?
Ответ: Для компиляции исходников - вызываете
Для запаковки class файлов в jar - вызываете
Удаление файлов - командой rm

Добавлено через 47 секунд
PS. если погуглить java makefile - будет куча готовых примеров
Вопрос: Make и makefile

Здравствуйте.
Меня интересует вопрос:
что такое make, makefile, зачем это нужно?
Часто, при загрузке с гита и компиляции больших проектов на C и C++, я встречаюсь с make. Где нужно использовать make для компиляции.
Зачем это нужно?
Я знаю как компилировать с помощью make в Cygwin. Как компилировать проекты с make в Visual Studio? Или другой вариант в Windows.
Заранее благодарен!
Ответ: Когда у вас нет IDE вроде Visual studio и вы хотите собрать какое-то ПО из исходников (в виндах это не частое явление, но в Линуксе - обычная практика). Вам каким-то образом нужно сказать компилятору множество параметров, выделить зависимости, указать что с чем линковать. В makefile все это и происходит.
Вопрос: Сборка через makefile gstreamer плеера

Всем привет, под линуксом не работал раньше. Нашел пример плеера с использованием . Клонировал репозиторий пытаюсь в директории выполнить make! А там валят ошибки (на скрине). Собираю на виртуальной машине. Я установил пакеты gtk2.0, libgstreamer1.0-dev, libgstreamer-plugins-base1.0-dev,
Собственно сам Makefile
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
CC := gcc
 
EXTRA_WARNINGS := -Wextra -ansi -std=c99 -Wno-unused-parameter
 
GST_LIBS := $(shell pkg-config --libs gstreamer-1.0 gstreamer-interfaces-1.0)
GST_CFLAGS := $(shell pkg-config --cflags gstreamer-1.0 gstreamer-interfaces-1.0)
GTK_LIBS := $(shell pkg-config --libs gtk+-2.0)
GTK_CFLAGS := $(shell pkg-config --cflags gtk+-2.0)
 
CFLAGS := -ggdb -Wall $(EXTRA_WARNINGS)
 
gst-player: ui.o gst-backend.o
gst-player: CFLAGS := $(CFLAGS) $(GTK_CFLAGS) $(GST_CFLAGS)
gst-player: LIBS := $(LIBS) $(GTK_LIBS) $(GST_LIBS)
binaries += gst-player
 
all: $(binaries)
 
$(binaries):
    $(CC) $(LDFLAGS) $(LIBS) -o $@ $^
 
%.o:: %.c
    $(CC) $(CFLAGS) -o $@ -c $<
 
clean:
    rm -rf $(binaries)
    find . -name "*.o" | xargs rm -rf

Там один дядька в ишю написал следующее, но я не понимаю как это применить в текущем makefile.
Make-3.82 is failing because of the order of libraries is stricter than earlier.

Patch:
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/Makefile b/Makefile
index 50b5a4d..591ed0a 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@ binaries += gst-player
 all: $(binaries)
 
 $(binaries):
-       $(CC) $(LDFLAGS) $(LIBS) -o $@ $^
+       $(CC) $^ $(LDFLAGS) $(LIBS) -o $@
 
 %.o:: %.c
        $(CC) $(CFLAGS) -o $@ -c $<

Я пытался собрать через gcc, такая же петрушка...
Bash
1
gcc -Wall (мои сырцы) -o (выходные) `pkg-config --cflags --libs gdk gtk+-2.0 glib-2.0 gobject-2.0 gstreamer-1.0`
Помогите пожалуйста.
Ответ: pkg-config - он же есть у меня и --cflags есть.
Сообщение от grgdvo
Вот с таким make-файлом на моей системе все собирается
Я с ашим пытался, но снова не пошло. pkg-config то же работает. Может из-за виртуалки х64?
Вопрос: Корректное указание компилятора в makefile

Всем здравствуйте.

Не уверен, что в правильном месте разместил тему, но надеюсь на это.


Задача: Работают на ОС Windows. В папке C:/sts имеется makefile. Нужно его запустить.

Мои действия: Скачал MinGW, установил его. В дополнительных переменных среды для PATH прописал путь (первый скрин). Зашел в консоль, перешел в директорию с makefile. Даю команду make, выдает ошибку (второй скрин):
C:\sts>make
gcc -o C:\sts/obj/assess.o -c C:\sts/src/assess.c
make: gcc: Command not found
make: *** [C:\sts/obj/assess.o] Error 127

Подозрения: Насколько понимаю, я неправильно указал тип компилятора в самом makefile. Перепробовал различные варианты, так и не разобрался, что именно нужно там указывать. Актуальное содержание makefile вот такое (третий скрин):
CC = gcc
GCCFLAGS = -c -Wall
ROOTDIR = C:\sts
SRCDIR = $(ROOTDIR)/src
OBJDIR = $(ROOTDIR)/obj
VPATH = src:obj:include
...(остальное не так важно)
Может быть мне нужно дать как-то ссылку на MinGW?
Я погуглил, нашел много обсуждений аналогичной проблемы, но все они были актуальны для UNIX-подобных систем (там это решалось загрузкой и установкой того же gcc компилятора через консоль), ничего про Windows.

Собственно, вопрос: Знает ли кто, каким образом можно решить данную проблему?
Ответ: Наконец-то справился. В самом деле ошибка была в указании пути в PATH. Правильный вариант ниже на скрине.
Т.е. вот в таком порядке:
C:\MinGW\msys\1.0\bin
C:\MinGW\bin

Всем большое спасибо за помощь!