Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 17

Как заставить компилятор выводить имя файла?

13.11.2012, 08:38. Показов 2557. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Компилятор GCC.
Из Readme:
=== TDM-GCC Compiler Suite for Windows ===
--- GCC 4.4/4.5 Series ---
*** Standard MinGW 32-bit Edition ***
Проблема вот в чем.
Создал батник, для экономии действий, следующего содержания:
C
1
2
g++ *.cpp
PAUSE
Кидаю в нужную папку и жму. Только вот на выходе получается a.exe. Как сделать так ,чтобы имя выходного файла было то же, что и у исходного файла?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2012, 08:38
Ответы с готовыми решениями:

Как заставить виджет выводить информацию из файла по времени?
как заставить виджет выводить информацию из фаила по времени? я начинающий Android Studio.

Как заставить консоль выводить кириллицу
Здравствуйте. Есть такой код: .386 .model flat, stdcall option casemap:none ExitProcess proto :dword GetStdHandle proto :dword ...

Как заставить IDE выводить программу в консоль?
Есть программа на паскале, генерирующая лабиринт. Переписал на Java, но компилятор выводит только "Process finished with exit code...

14
~ Эврика! ~
 Аватар для OhMyGodSoLong
1258 / 1007 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
13.11.2012, 09:19
g++ -o <имя exe-файла> *.cpp

И посмотрите в сторону мейкфайлов.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
13.11.2012, 09:24
Можно задать имя в ручную: g++ *.cpp -o test.exe
0
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 17
13.11.2012, 10:49  [ТС]
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
g++ -o <имя exe-файла> *.cpp

И посмотрите в сторону мейкфайлов.
<имя exe-файла> писать вручную? Так хотелось бы автоматизировать этот процесс, написав что-то вроде <file-name>.exe
Посмотрел о мейкфайлов. У меня виндовс. А мейкфайлы, как я понял, для линукса.

lazybiz, так чтобы не набирать вручную, и пытаюсь узнать, как заставить компилятор вставлять имя ехе-файла самостоятельно, вроде бы это нетрудно - береш имя .срр-файла и вставляешь перед .ехе, вот только вопрос, как это сказать компилятору?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
13.11.2012, 11:04
Nweo, в данном случае никак.
В Windows тоже можно использовать Makefile, главное чтобы была установлена утилита GNU make.

В MinGW я делаю через Makefile так:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
APP = main
CFL = -c -Wall -O2 -std=gnu++0x
LFL = -s -static
SRC = $(APP).cpp file1.cpp file2.cpp
OBJ = $(SRC:.cpp=.o)
LIB = -lgdi32
 
all: $(OBJ)
    g++ $(LFL) -o $(APP).exe $(OBJ) $(LIB)
 
%.o: %.cpp
    g++ $(CFL) $*.cpp -o $@
 
clean:
    @del $(OBJ) > NUL 2>&1
    @del $(APP).exe > NUL 2>&1
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698
13.11.2012, 14:44
Цитата Сообщение от Nweo Посмотреть сообщение
g++ *.cpp
если в папке один файл *cpp, можно создать экзешник, который бы эту строку
C++
1
g++ *.cpp
преобразовывал в
C++
1
g++ -o <имя какое надо>*.cpp
а потом запускал
C++
1
g++ -o <имя какое надо>*.cpp
0
13.11.2012, 15:30

Не по теме:

Мы сами создаем себе трудности и преодолеваем их! :yes2:

1
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 17
13.11.2012, 17:18  [ТС]
kravam, можно поподробнее, как создать экзешник, что написать в <имя какое надо>, чтобы не нужно было ручками туда вписывать имя файла?
Kastaneda,

Не по теме:

а вообще поставил CodeBlocks, чтобы можно было быстрее скомпилировать 3 и более файла. Только вот не могу отключить автозаполнение, не подскажете, как эксперт в С++, как это сделать? Хочу научиться без подсказок! В настройках едитора не нашел. Если б можно было, вопрос в теме отпал бы сам собою.

0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698
13.11.2012, 18:06
Nweo, ставить надо Dev-Cpp, ничё лишнего, как говорится. Плюс компилятор gcc, разве плохо? Со временем обновляешь компилятор, смотришь мне в подпись и так далее.

++++++++++++++++++++++++++++++++++++++++ ++++++++++++++

Вот такой экзешник можно. Предполагается, что в папке один файл *.main.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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <stdio.h>
#include <string.h>
#include <windows.h>
 
 
int f (char*, char*);
int main(){
 
 //НАйдём имя файлф *.cpp
 char ima_faila [256];
 f ((char*)".\\*.cpp", ima_faila);
 ima_faila [strlen (ima_faila)- 4]= 0;
 
 //Теперь лепим итоговую строку
 char itog [256]= "g++ -o ";
 strcat (itog, ima_faila);
 strcat (itog, ".exe ");
 strcat (itog, ima_faila);
 strcat (itog, ".cpp");
 
 printf (itog);
 printf ("\n");
 
 //Теперь создаём батник с этой строкой
 FILE* f;
 if (!(f= fopen("kompil.bat", "wb"))) {
  printf ("батник не открыт на запись\n");
  getchar ();
  return 0; 
 }
 
 //Теперь наполним его этим строкой
 if (fputs (itog, f)==EOF) {
  printf ("ни хрена в батник не записалось\n");
  getchar ();
  return 0; 
 }
 //Сперва надо закрыть, а потом запустить батник
 fclose (f);
 
 //А теперь запускаем этот батник
 system ("kompil.bat");
 
 
 //Теперьвсё, удаляем батник 
 system ("DEL kompil.bat");
 return 0;
}
 
//Функция для поиска единственного файла *.cpp
int f (char* ima_direktorii_i_rashirenie, char* rez){
        WIN32_FIND_DATA FindFileData;
        HANDLE hf;
        hf = FindFirstFile(ima_direktorii_i_rashirenie,&FindFileData);
        if(hf != INVALID_HANDLE_VALUE){
                do{
                  strcpy (rez, FindFileData.cFileName);                      
                  return 0;
                }
                while(FindNextFile(hf,&FindFileData) != 0);
                FindClose(hf);
        }
        printf ("всё плохо, может, файла *.cpp нет, может, ещё что\n");
        return 0;
}
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
13.11.2012, 19:06
Цитата Сообщение от Nweo Посмотреть сообщение
а вообще поставил CodeBlocks, чтобы можно было быстрее скомпилировать 3 и более файла. Только вот не могу отключить автозаполнение, не подскажете, как эксперт в С++, как это сделать?
Я давно уже в codeBlocks не работал, даже не помню как там что настраивается. И про автозаполение вопроса не понял.
Вообще делать ради этого экзешник это перебор. Такие вещи решаются батником. Если очень охото юзерфрендлости, вот накидал на коленке (проверить не могу, сижу под линуксом, но вроде синтаксис не попутал )
Bash
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
32
33
34
35
36
37
38
39
@echo off
chcp 886
cls
 
set file=a.exe
set files=*.cpp
 
:MENU
echo. 
echo Choose your option and press "Enter"
echo. 
echo 1. Set .exe name (a.exe by default)
echo 2. Enter a file names to compilation (all by default)
echo 3. Compilation
echo 4. Exit
 
set /p option=
if %option% == 1 goto :GET_NAME
if %option% == 2 goto :GET_FILE_NAMES
if %option% == 3 goto :COMPILATION
if %option% == 4 goto :EXIT
 
:GET_NAME
echo Output file name:
set /p file_name=
set file=%file_name%
goto :MENU
 
:GET_FILE_NAMES
echo Enter file names:
set /p file_names=
set files=%file_names%
goto :MENU
 
:COMPILATION
g++ -o %file% %files%
 
:EXIT
pause
0
13.11.2012, 19:09

Не по теме:

2 kravam
> Мы сами создаем себе трудности и преодолеваем их!
this

Сколько мучений вместо того, чтобы один раз в одну строку одного конфига объяснить тупой машине, как называть экзешник.

А если основной файл надо будет называть не myapp.main.cpp? А если файл с функцией main() надо будет называть именно main.cpp и никак иначе, а экзешник именно myapp? Вот такие автогенерируемые батники тут не помогут.

0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,698
13.11.2012, 19:53
Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
Сколько мучений
"Что ж, может, работа, а может, и не работа. Я знаю только одно, что Тому Сойеру она по душе."
Марк Твен, "Приключения Тома Сойера"

++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++

одного конфига
какого на фиг конфига?

А если основной файл надо будет называть не myapp.main.cpp?
а это по фиг, имя экзешника будет как ТС просил, лишь бы он был один и расширение было *.cpp

Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
А если файл с функцией main() надо будет называть именно main.cpp и никак иначе, а экзешник именно myapp? Вот такие автогенерируемые батники тут не помогут.
мой экзешник делает только то, что делает и не более.
0
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 17
13.11.2012, 22:03  [ТС]
Цитата Сообщение от lazybiz Посмотреть сообщение
Можно задать имя в ручную: g++ *.cpp -o test.exe
Кстати, недавно выяснил, что .exe писать необязательно, компилятор сам сделает exe

Добавлено через 2 минуты
Цитата Сообщение от lazybiz Посмотреть сообщение
Nweo, в данном случае никак.
В Windows тоже можно использовать Makefile, главное чтобы была установлена утилита GNU make.

В MinGW я делаю через Makefile так:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
APP = main
CFL = -c -Wall -O2 -std=gnu++0x
LFL = -s -static
SRC = $(APP).cpp file1.cpp file2.cpp
OBJ = $(SRC:.cpp=.o)
LIB = -lgdi32
 
all: $(OBJ)
    g++ $(LFL) -o $(APP).exe $(OBJ) $(LIB)
 
%.o: %.cpp
    g++ $(CFL) $*.cpp -o $@
 
clean:
    @del $(OBJ) > NUL 2>&1
    @del $(APP).exe > NUL 2>&1
Сделал из Вашего кода батник, cmd поморгал, (разобрал слова "не является рисунком...) да и исчез. А exe-шки не появилось.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
13.11.2012, 22:42
Цитата Сообщение от Nweo Посмотреть сообщение
Сделал из Вашего кода батник, cmd поморгал, (разобрал слова "не является рисунком...) да и исчез. А exe-шки не появилось.
Странно... почему же это cmd не схавал мой Makefile... хм.., загадка!!

Добавлено через 1 минуту
А. Точно! Может потому что это Makefile а не батник!??
1
13.11.2012, 22:46

Не по теме:

Цитата Сообщение от lazybiz Посмотреть сообщение
А. Точно! Может потому что это Makefile а не батник!??
зачет:rofl:

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.11.2012, 22:46
Помогаю со студенческими работами здесь

Как заставить выводить точку в вещественных числах?
JavaScript-код требует точки в качестве разделителей дробной и целой частей. Как формат настроить? Я не могу передать значения в массив...

Как заставить setText(); выводить строку а не ее название?
Добрый вечер! Необходимо выводить строку из strings.xml, которая будет меняться в зависимости от переменной i. В данный момент просто...

Как заставить компилятор применить нужную команду
Всем , здравствуйте! Простой такой кодик , но не работает. Т.к компилятор вместо команды SUBI - упорно пихает INC ( который флаг (Н) не...

Как заставить компилятор не компилить неправильную программу?
Мне не даёт покоя разговор с одним программистом, имевший место быть несколько лет назад. Тот сказал, что он так кодит, что у него...

Как заставить Яндекс выводить в сниппете то что нужно
а не то что он хочет. Для гугла пишется description, а с Яндекс что делать? Спасибо!


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru