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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.98
lRazZzoRl
2 / 2 / 0
Регистрация: 31.01.2010
Сообщений: 18
#1

сборка nmake - C++

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

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

Сборка /MT - C++
Для избавления от зависимости от редистов попытался собрать дллку не с /MD, а с /MT. /NODEFAULTLIB:msvcrt.lib, естественно, привело к...

Сборка мусора - C++
Нужна ли в Си ++ «сборка мусора»? Почему возникает такая проблема и как она решается в Си++?

Сборка пакета - C++
В общем есть схема - по ней надо собрать пакет (положить данные в массив), но вот ума не приложу как это сделать - может у кого то будут...

Relese сборка - C++
Захотел собрать Relese, и тут повылазили: 1>DeviceButton.obj : error LNK2001: unresolved external symbol "public: __thiscall...

Сборка проекта - C++
Ребята, у меня проблема. Написал консольное приложение. Всё отлично. "Собрал" проект. Захожу в папку Release. Там два файла (.exe и...

Не работает сборка - C++
Разбил исходный файл. как объяснили в посте - http://www.cyberforum.ru/cpp-beginners/thread43826.html При компиляции все запускается. Но...

X64 сборка - C++
если сборка x64 значит ли то что моя программа не будет запускаться на 32 разрядной операционке? если нет то как сделать что бы моя...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
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
В астрале
Эксперт С++
7968 / 4730 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
13.06.2011, 13:26     сборка nmake #4
lRazZzoRl, Причем тут make и куда код писать?
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
13.06.2011, 17:50     сборка nmake #7
lRazZzoRl, для GNU make - в консоли в папке с проектом написать "make"
Для nmake: "nmake НАЗВАНИЕ_ФАЙЛА_NMAKE". Вроде бы.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
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
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
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
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
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++
Есть библиотека из 2 следующих файлов: //mylib.h #ifndef __MYLIB_H__ #define __MYLIB_H__ void hello();

Сборка и использование DLL - C++
Здравствуйте, я обучаюсь на программиста. Первый раз столкнулся со сборками с помощью Makefile. Где можно подробно ознакомится с...

Не найдена зависимая сборка - C++
Нашел статью, в которой говорится, что OpenMP от VS2005 работает лучше, нежели от VS2010. Собрал проект согласно инструкции; запустил,...

Сборка POCO проекта - C++
Запускаю файл build_vs100.cmd и батник создает кучу файлов с расширением lib. Копирую их в C:\Program Files (x86)\Microsoft Visual...

Сборка ДЛЛ библиотеки - C++
Проблема со сборкой ДЛЛ: В библиотеке должно быть несколько функций, которые необходимо вызывать из C# кода, но проблема в том, что при...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru