Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.73/75: Рейтинг темы: голосов - 75, средняя оценка - 4.73
14 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422

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

15.01.2020, 23:55. Показов 17442. Ответов 25
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Недавно перешел с Python на C++. И при изучении заметил, чтобы создать файл, где нужно писать исходный код, то нужно сначала создать некий проект. А можно ли в одном проекте, создать несколько файлов с расширением .cpp для работы с разными, никак друг от друга независящими кодами или каждый раз нужно создавать новый проект для нового кода? Иначе компилятор у меня компилирует задачу с предыдущего файла. В Python все просто: создал файл с расширением .py, забил в командном окне название файла и запустил. Работаю в среде Visual Studio 2017, файлы создаю в папке Исходные файлы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.01.2020, 23:55
Ответы с готовыми решениями:

Как создать макрос, который сохраняет содержание столбцов А:А, С:С, О:О в отдельные ТХТ файлы?
Задачка: Есть столбцы с данными А:А, С:С, О:О. Надо чтобы в результате работы макроса в конкретной директории появлялись текстовые файлы ...

как создать сборку для старого проекта и использовать ее в другом проекте?
как создать сборку для старого проекта и использовать ее в другом проекте? Хочу использовать некоторые классы в новом проекте, хочу...

Имеет ли смысл вставлять internal для использования класса в одном проекте
Имеет ли смысл вставлять internal для использования класса в одном проекте? Т.е. я знаю, что нигде более internal класс использоваться не...

25
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
30.01.2020, 14:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от SalavatGood Посмотреть сообщение
В Питон в консоле достаточно прописать в консоли pip install <имя_модуля> и модуль установлен, а в C++ получется просто файл с библиотекой в какую-то папку проекта закинуть надо или как?
Да вроде и в Питоне можно просто подложить файл модуля в ту же папку что и основой py файл. По крайней мере, если module.py не зависит ни от чего отсутствующего на компьютере.

Если библиотека идет одним .h и без нестандартных зависимостей, то да, ее можно просто подложить к основному main.cpp. Иначе либо стандартное apt install под Линуксом, либо увлекательный квест под Виндой. К сожалению, под Форточками процесс подтягивания зависимостей так толком и не стандартизировали.

Добавлено через 9 минут
Цитата Сообщение от Recrut_rf Посмотреть сообщение
так же и с библиотеками (#pragama_lib - этой директивой по-моему подключают библиотеку)
На сколько я помню, там могут начаться приключения с несовместимостью ABI из-за того что библиотека собиралась одним компилятором, а у вас другой. И дальше в инструкции появляется пункт "ну вы как ни будь пересоберите этот ворох cpp под себя. Я тут bat-ник для этого приложил, надеюсь, сработает".

Ну а под Линуксом таки об этом у пакетного менеджера голова болит.
1
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
30.01.2020, 15:31
SalavatGood, если тебе для учебы, то можно и в одном проекте.
Просто для "программы" добавляешь новый срр файл, и реализуешь его как обычно, за исключением точки входа, например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// lab123.cpp
#include <iostream>
 
int sum(int a, int b)
{
    return a + b;
}
 
int lab123_main()
{
    int a, b;
    std::cin >> a >> b;
    std::cout << sum(a, b);
    return 0;
}
И так каждый раз для очередного кода, однажды собранный(если не изменялся) он не будет перекомпилироваться.

А основной срр будет выглядеть так
C++
1
2
3
4
5
6
7
// main.cpp
int lab123_main(); // объявляем что нужно запустить
 
int main()
{
    return lab123_main(); // типо запускаем
}
Добавлено через 28 минут
только не забывай локальные для такого файла функции и переменные объявлять как static, что бы избежать конфликтов при линковке (функция sum в моем примере должна быть объявлена именно так)
1
14 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
30.01.2020, 15:34  [ТС]
zayats80888, примерно так же создал в исходных и все получилось:
C++
1
2
3
4
5
6
7
//just_task.cpp
#include<iostream>
using namespace std;
 
void just_task() {
    cout << "Hi Everyone" << endl;
}
C++
1
2
3
4
5
6
7
8
9
10
11
//main.cpp
#include<iostream>
#include<stdio.h>
using namespace std;
 
void just_task();
 
void main()
{
    just_task();
}
Гораздо удобнее, чем для каждой отдельной простой задачи создавать отдельный проект, главное не запутаться в типах функций... То есть в файле main.cpp мы just_task объявляем сначала как глобальный объект (чтобы компилятор "увидел" его в каталоге исходных файлов) и просто в функции main вызываем его?
0
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
30.01.2020, 15:41
Цитата Сообщение от SalavatGood Посмотреть сообщение
//main.cpp
#include<iostream>
#include<stdio.h>
using namespace std;
это тебе в main не нужно

Добавлено через 42 секунды
Цитата Сообщение от SalavatGood Посмотреть сообщение
То есть в файле main.cpp мы just_task объявляем сначала как глобальный объект (чтобы компилятор "увидел" его в каталоге исходных файлов) и просто в функции main вызываем его?
да, вроде того

Добавлено через 1 минуту
И "главная" функция в таком файле(just_task.cpp) должна иметь уникальное для проекта имя
1
14 / 13 / 1
Регистрация: 18.12.2018
Сообщений: 422
30.01.2020, 15:55  [ТС]
Цитата Сообщение от Renji Посмотреть сообщение
Если библиотека идет одним .h и без нестандартных зависимостей, то да, ее можно просто подложить к основному main.cpp.
Ну допустим, если вдруг понадобилось написать скрипт движения камеры для движка unreal engine 4(который, кстати, тоже на C++ написан), как правильно интегрировать библиотеку в visual studio, где все эти методы/функции уже имеются?
И как документацию описания методов найти, как в https://pypi.org/
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
30.01.2020, 16:38
Цитата Сообщение от SalavatGood Посмотреть сообщение
Ну допустим, если вдруг понадобилось написать скрипт движения камеры для движка unreal engine 4(который, кстати, тоже на C++ написан), как правильно интегрировать библиотеку в visual studio, где все эти методы/функции уже имеются?
Если методы-функции уже имеются, то все сводится к добавлению #include-ов. На Хабре вроде гайд был.
Цитата Сообщение от SalavatGood Посмотреть сообщение
И как документацию описания методов найти, как в https://pypi.org/
Стандартные библиотеки - https://en.cppreference.com/. Все остальное - на сайте разработчика этого самого остального.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2020, 16:38

Как сделать несколько задач в одном проекте?
Можно ли оформить решение всех задач из лабораторной работы в одном проекте? Если да, то как? Работаю в MS Visual C++ 2010 Express.

Как объединить в одном проекте несколько форм?
Мне необходимо увязать 3 формы между собой. У меня есть в проекте одна форма - она главная и запуск программы начинается с нее....

Как в проекте purebasic создать память, доступную для других внешних процессов?
как в проекте purebasic создать общедоступную память , доступный для других внешних процессов?

Как в одном проекте сделать два пространства имен?
сделал так. но выводит только то что в namespace Laba, a arifm не выводит в консоль using System; using System.Collections.Generic; ...

Как использовать два winsock контрола в одном проекте
Не получается работать с двумя winsock контролами, второй не подключается.


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru