Форум программистов, компьютерный форум CyberForum.ru

сборка nmake - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.98
lRazZzoRl
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
12.06.2011, 18:40     сборка nmake #1
Понятия не имею, куда писать такую просьбу, надеюсь, куда надо переместят.
Нужно сделать простейший make файл с помощью nmake, там пара cpp, заголовок, но я нигде не нашел вменяемого описания, как это сделать. Вроде что-то связанное с консолью, может кто сталкивался с таким? С чего хотя бы начинать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2011, 18:40     сборка nmake
Посмотрите здесь:

Не работает сборка C++
Сборка загрузочного модуля C++
C++ Сборка проекта Microsip
Сборка мусора C++
Relese сборка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.06.2011, 05:06     сборка nmake #2
Вот официальный справочник по nmake: http://msdn.microsoft.com/ru-ru/library/dd9y37ha.aspx
Вот очень обширное руководство по утилите GNU make, имеющий сходный синтаксис: http://www.opennet.ru/docs/RUS/make_compile/make.html. Многое из этого руководства будет подходить и для nmake
lRazZzoRl
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 13:23  [ТС]     сборка nmake #3
спасибо, но мне бы лучше такое руководство, где начиналось с "куды код писать и как потом программу запустить?".
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
13.06.2011, 13:26     сборка nmake #4
lRazZzoRl, Причем тут make и куда код писать?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.06.2011, 14:05     сборка nmake #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 Посмотреть сообщение
спасибо, но мне бы лучше такое руководство, где начиналось с "куды код писать и как потом программу запустить?".
по первой ссылке все это есть. Не ленись, и сэкономишь свое и чужое время.
lRazZzoRl
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 17:42  [ТС]     сборка nmake #6
я не ленивый человек, честно искал информацию, сюда обратился только когда совсем уже ничего не понял. Как потом запустить ето чудо?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.06.2011, 17:50     сборка nmake #7
lRazZzoRl, для GNU make - в консоли в папке с проектом написать "make"
Для nmake: "nmake НАЗВАНИЕ_ФАЙЛА_NMAKE". Вроде бы.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
13.06.2011, 18:33     сборка nmake #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
lRazZzoRl
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 19:42  [ТС]     сборка nmake #9
ой, ребята, что-то я туплю на ровном месте
1) чтобы сделать make файл, можно просто поменять расширение, скажем, с тхт?
2) поместить в папку программу, make файл, потом в консоли писать "nmake НАЗВАНИЕ_ФАЙЛА_NMAKE"? Консоль - это пуск-выполнить??
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.06.2011, 19:45     сборка nmake #10
Цитата Сообщение от lRazZzoRl Посмотреть сообщение
1) чтобы сделать make файл, можно просто поменять расширение, скажем, с тхт?
да

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

Цитата Сообщение от lRazZzoRl Посмотреть сообщение
потом в консоли писать "nmake НАЗВАНИЕ_ФАЙЛА_NMAKE"
grizlik78 написал(а) правильный ответ на этот вопрос:
Цитата Сообщение от grizlik78 Посмотреть сообщение
Если файл называется Makefile, то и для nmake будет просто "nmake"
Добавлено через 37 секунд
а иначе nmake -f имя_файла
lRazZzoRl
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 20:14  [ТС]     сборка nmake #11
Пробовал по разному, но получается только открыть файл. Не понял, как правильно писать в командной строке...
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
13.06.2011, 20:22     сборка nmake #12
Ну ты саму-то "командную строку" запустил?
Кстати, обычно в главном меню в папке Visual Studio создаётся ярлык на консоль с установленными для VC переменными окружения. Что-нибудь вроде "Visual Studio 2008 Command Prompt"
Переход на диск D
Код
D:
Переход в папку Temp в корне текущего диска
Код
СD \Temp
Запуск nmake
Код
nmake
Добавлено через 1 минуту
Вывод содержимого текущего каталога
Код
DIR
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2011, 20:49     сборка nmake
Еще ссылки по теме:

Сборка проекта C++
Сборка /MT C++
C++ Функции и сборка мусора

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

Или воспользуйтесь поиском по форуму:
lRazZzoRl
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
13.06.2011, 20:49  [ТС]     сборка nmake #13
Все, ребята, спасибо, немного понял. Несложно, но, блин, нигде ж это не написано!
Yandex
Объявления
13.06.2011, 20:49     сборка nmake
Ответ Создать тему
Опции темы

Текущее время: 23:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru