В одном проекте может быть несколько основных, если каждому основному будет соответствовать свой исполняемый файл в дереве каталогов сборки.
В следующем примере используется CMake, я не знаю, можно ли это сделать с помощью другого программного обеспечения менеджера процессов сборки.
Сохраните следующие два файла .cpp в папке с именем source и назовите их square_root.cpp и power_of_two.cpp:
square_root.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (int argc, char *argv[])
{
if (argc < 2) {
fprintf(stdout,"Usage: %s number\n",argv[0]);
return 1;
}
double inputValue = atof(argv[1]);
double outputValue = sqrt(inputValue);
fprintf(stdout,"The square root of %g is %g\n",
inputValue, outputValue);
return 0;
}
power_of_two.cpp:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (int argc, char *argv[])
{
if (argc < 2) {
fprintf(stdout,"Usage: %s number\n",argv[0]);
return 1;
}
double inputValue = atof(argv[1]);
double outputValue = inputValue*inputValue;
fprintf(stdout,"The power of two of %g is %g\n",
inputValue, outputValue);
return 0;
}
Обратите внимание, что они оба содержат метод main.
Затем в той же папке добавьте .txt с именем CmakeLists.txt: он сообщит компилятору количество исполняемых файлов, как их вызвать и где найти основные (ие) файлы.
CMakeLists.txt:
cmake_minimum_required (VERSION 2.6)
project (Square_and_Power)
add_executable(Square2 square_root.cpp)
add_executable(Power2 power_of_two.cpp)
Создайте новую папку с именем build в том же корне исходного кода, а затем используйте cmake для настройки и генерации. Посмотрите на структуру папок, созданных в сборке папок.
Откройте терминал в сборке и введите make .
→ make
[ 50%] Built target Power2
Scanning dependencies of target Square2
[ 75%] Building CXX object CMakeFiles/Square2.dir/square_root.cpp.o
[100%] Linking CXX executable Square2
[100%] Built target Square2
Если ошибок не возникнет, у вас будет два исполняемых файла: Square2 и Power2.
→ ./Square2 5
The square root of 5 is 2.23607
→ ./Power2 5
The power of two of 5 is 25
Итак, у вас есть один и тот же проект с двумя сетевыми системами, который скомпилировал два разных приложения. Два файла cpp могут затем использовать один и тот же заголовок и дополнительные методы в других файлах .cpp или .h в проекте.
Предлагаю также взглянуть на учебник по cmake https://cmake.org/cmake-tutorial/
Могут быть и другие методы для получения похожих, если не одинаковых результатов, но я не знаю ни одного. Надеюсь, что другой пользователь внесет свой вклад в эту тему!