2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
1

сборка nmake

12.06.2011, 18:40. Показов 10152. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Понятия не имею, куда писать такую просьбу, надеюсь, куда надо переместят.
Нужно сделать простейший make файл с помощью nmake, там пара cpp, заголовок, но я нигде не нашел вменяемого описания, как это сделать. Вроде что-то связанное с консолью, может кто сталкивался с таким? С чего хотя бы начинать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2011, 18:40
Ответы с готовыми решениями:

Nmake отладка
Здравствуйте. Пытаюсь разбирать рабочий проект. Makefile очень навороченный. Хотел просмотреть...

NMake из консоли windows выдает ошибку
Хочу запустить у себя Telegramdesktop. На гитхабе есть инсрукция. Скачал visual studio community...

Статическая сборка: где nmake ?
Поставил новый Qt, назвав папку предварительно StaticQt. Соответственно в одном месте сейчас есть...

Nmake и Jom
Проблема с инструкцией, вот она сама вот тут понял, решения нашлись, все готово. The solution...

12
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.06.2011, 05:06 2
Вот официальный справочник по nmake: http://msdn.microsoft.com/ru-r... y37ha.aspx
Вот очень обширное руководство по утилите GNU make, имеющий сходный синтаксис: http://www.opennet.ru/docs/RUS... /make.html. Многое из этого руководства будет подходить и для nmake
0
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 13:23  [ТС] 3
спасибо, но мне бы лучше такое руководство, где начиналось с "куды код писать и как потом программу запустить?".
0
В астрале
Эксперт С++
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
13.06.2011, 13:26 4
lRazZzoRl, Причем тут make и куда код писать?
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.06.2011, 14:05 5
Ну, я могу привести тебе пример для GNU make.
Допустим, тебе нужно написать программу, которая будет выводить каждую строку, переданную ей в качестве аргумента, в обратном порядке.
Ты написал эту программу. Она состоит из трех файлов.
Файл main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
#include "reverse.h"
 
int main(int argc, char* argv[])
{
    if(argc == 1)
    std::cout << "No input specified" << std::endl;
    else
    for(int i = 1; i < argc; ++i)
        std::cout << reverse(argv[i]) << std::endl;
   
    return 0;
}
Файл reverse.h:
C++
1
2
3
4
5
6
#ifndef REVERSE_H
#define REVERSE_H
 
char* reverse(char*);
 
#endif
Файл reverse.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "reverse.h"
 
#include <cstring>
 
char* reverse(char* str)
{
    size_t len = strlen(str);
    
    for(size_t i = 0; i < len / 2; ++i)
    {
    char t = str[i];
    str[i] = str[len - i - 1];
    str[len - i - 1] = t;
    }
    return str;
}
Вот так будет выглядеть файл сборки Makefile:
Код
# Цель сборки
# Обычно у меня цель сборки называется так же, как и текущий каталог:
# TARGET=$(shell basename `pwd`)
TARGET=reverse
# Исходники: в данном случае - все файлы текущего каталога
# с расширением .cpp. Можно было бы перечислить их явно так:
# SOURCES=main.cpp reverse.cpp
SOURCES=$(wildcard *.cpp)
# Имена объектных файлов получены текстовой заменой в именах
# исходников
BINARIES=$(SOURCES:%.cpp=%.o)

CXX=g++	# Компилятор
CXXFLAGS=-g -Wall -ansi -pedantic-errors # Опции компиляции
LDFLAGS= # Опции линковки

RM=rm -vf # Программа для удаления файлов

all: $(TARGET)			# Цель по умолчанию

# Правило для сборки нашей цели из объектных файлов
$(TARGET): $(BINARIES)
	$(CXX) -o $@ $^ $(LDFLAGS)

# Неявное правило для сборки объектных файлов из исходныков
%.o: %.cpp
	$(CXX) -c -o $@ $^ $(CXXFLAGS)

clean:				# Правило для очистки
	$(RM) $(BINARIES) $(TARGET)

# Специальная цель для задания "псевдоцелей"
.PHONY: all clean
Цитата Сообщение от lRazZzoRl Посмотреть сообщение
спасибо, но мне бы лучше такое руководство, где начиналось с "куды код писать и как потом программу запустить?".
по первой ссылке все это есть. Не ленись, и сэкономишь свое и чужое время.
1
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 17:42  [ТС] 6
я не ленивый человек, честно искал информацию, сюда обратился только когда совсем уже ничего не понял. Как потом запустить ето чудо?
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.06.2011, 17:50 7
lRazZzoRl, для GNU make - в консоли в папке с проектом написать "make"
Для nmake: "nmake НАЗВАНИЕ_ФАЙЛА_NMAKE". Вроде бы.
1
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
13.06.2011, 18:33 8
Если файл называется Makefile, то и для nmake будет просто "nmake"

Добавлено через 37 секунд
а иначе nmake -f имя_файла

Добавлено через 38 минут
Для программы, которую привёл Nameless One, подошёл бы такой файл Makefile:
Код
OBJS = main.obj reverse.obj

all: reverse.exe

.cpp.obj:
    $(CXX) -c $(CXXFLAGS) $<

reverse.exe: $(OBJS)
    link /out:$@ $(OBJS)
Но в принципе, это всё можно было бы и в одно явное правило засунуть, через cl. ну или наоборот, цель определить отдельной переменной, добавить вспомогательные цели, вроде clean, ну, в общем, привести к виду, как у Nameless One
1
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 19:42  [ТС] 9
ой, ребята, что-то я туплю на ровном месте
1) чтобы сделать make файл, можно просто поменять расширение, скажем, с тхт?
2) поместить в папку программу, make файл, потом в консоли писать "nmake НАЗВАНИЕ_ФАЙЛА_NMAKE"? Консоль - это пуск-выполнить??
0
Эксперт С++
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
13.06.2011, 19:45 10
Цитата Сообщение от lRazZzoRl Посмотреть сообщение
1) чтобы сделать make файл, можно просто поменять расширение, скажем, с тхт?
да

Цитата Сообщение от lRazZzoRl Посмотреть сообщение
Консоль - это пуск-выполнить??
да. После этого нужно будет перейти в каталог с папкой с помощью утилиты cd

Цитата Сообщение от lRazZzoRl Посмотреть сообщение
потом в консоли писать "nmake НАЗВАНИЕ_ФАЙЛА_NMAKE"
grizlik78 написал(а) правильный ответ на этот вопрос:
Цитата Сообщение от grizlik78 Посмотреть сообщение
Если файл называется Makefile, то и для nmake будет просто "nmake"
Добавлено через 37 секунд
а иначе nmake -f имя_файла
1
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 20:14  [ТС] 11
Пробовал по разному, но получается только открыть файл. Не понял, как правильно писать в командной строке...
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
13.06.2011, 20:22 12
Ну ты саму-то "командную строку" запустил?
Кстати, обычно в главном меню в папке Visual Studio создаётся ярлык на консоль с установленными для VC переменными окружения. Что-нибудь вроде "Visual Studio 2008 Command Prompt"
Переход на диск D
Код
D:
Переход в папку Temp в корне текущего диска
Код
СD \Temp
Запуск nmake
Код
nmake
Добавлено через 1 минуту
Вывод содержимого текущего каталога
Код
DIR
1
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 20:49  [ТС] 13
Все, ребята, спасибо, немного понял. Несложно, но, блин, нигде ж это не написано!
0
13.06.2011, 20:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2011, 20:49
Помогаю со студенческими работами здесь

Nmake не компилирует CMakeLists
Доброго времени суток! Появилась необходимость скомпилировать готовую библиотеку для студии, а...

Сборка ПК, бюджет 10500грн, сборка завершена, оцените пожалуйста всё ли оптимально подобрано?
Магазин rozetka.ua Жёсткий диск на 200Гб оставляю старый и двд ром старый (ЖД заменю летом...

Сборка(до сборка) игрового ПК, выбор видеокарты
Привет, Уважаемые форумчане !!! :) Вкратце: Собирал ПК уже давно(февраль этого года), не купил...

Сборка
Как создать сборку(файл dll)?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru