Microsoft Visual Studio — интегрированная среда разработки компьютерных программ от Microsoft. В этом посте я рассказал о том, как настроить несколько проектов C++ в Visual Studio и как создать статическую библиотеку, которую можно использовать в нескольких проектах. Представьте ситуацию, что вы работаете над проектом инвестиционного анализа фондового рынка. В основном проекте под названием «Анализ» размещена программа, которая генерирует автоматические предложения о покупке или продаже акций на основе алгоритма. Однако алгоритм размещен в другом проекте под названием Engine, который является рабочей лошадкой для реализации алгоритма. В частности, анализ основного проекта создает исполняемый файл, связанный со статической библиотекой, скомпилированной из механизма проекта.

C:.
└───Investment
    ├───Analysis
    │   └───src
    ├───bin
    │   └───intermediates
    └───Engine
        └───src

Рисунок 1. Древовидная директория полученного решения.

Вот процедура, которую я предпочитаю:

  1. Создать новый проект (в рамках решения). В меню выберите ФАЙЛ › Создать › Проект › Visual C++ › Общие › Пустой проект. В диалоговом окне в поле Solution: введите «Инвестиции», проектName: «Анализ», родительский каталог решения Location: (например, c:\DEV). И установите флажок «Создать каталог для решения».
  2. Создайте и отредактируйте основной файл проекта. В Solution Explore щелкните значок «Показать все файлы». Щелкните правой кнопкой мыши значок проекта «Анализ», выберите «Добавить» > «Новый элемент» > «Файл C++ (.cpp)». В диалоговом окне в поле Name: введите «application.cpp», а в поле Location: введите C:\DEV\INVESTMENT\ANALYSIS\src. Я предпочитаю, чтобы файлы .cpp хранились в их собственной (исходный файл или, короче, src) папке. В конце этого поста я привожу для справки полный пример кода.
  3. Убедитесь, что основной файл является нашим исполняемым файлом. В обозревателе решений щелкните правой кнопкой мыши значок проекта «Анализ». Выберите «Свойства» > «Общие» в разделе «Свойства конфигурации» > «Configuration: Все конфигурации» > «Platform: Все платформы». Затем перейдите в «Свойства конфигурации» > «Общие» > «Параметры проекта по умолчанию» > «Тип конфигурации». Установите его на «приложение (.exe)».
  4. (Необязательно) добавить курс в основную папку проекта. В обозревателе решений щелкните правой кнопкой мыши папку src, выберите Добавить › Класс. В диалоговом окне введите Class Name: (например, AClass). Установите флажок «Виртуальный деструктор». Перетащите файлы — «AClass.cpp» и «AClass.h» в нашем примере — в папку src.
  5. Настроить каталог файлов. В обозревателе решений щелкните правой кнопкой мыши значок проекта «Анализ». Выберите «Свойства» > «Общие» в разделе «Свойства конфигурации» (опять же, обязательно установите Configuration: Все конфигурации > Platform: Все платформы) Output Directory: $(SolutionDir)bin\\$(Configuration)\, Intermediate Directory: $(SolutionDir)bin\промежуточные\$(платформа)\$(конфигурация)\
  6. Создавайте вспомогательные проекты для статической библиотеки. Щелкните правой кнопкой мыши значок решения, чтобы выбрать «Добавить» > «Новый проект…» > «Visual C++» > «Кроссплатформенный» > «Пустой проект». Name: ДВИГАТЕЛЬ. Location: C:\DEV\ИНВЕСТИЦИИ\
  7. Задайте свойства вспомогательного проекта для статической библиотеки. Щелкните правой кнопкой мыши значок «ДВИГАТЕЛЬ» и выберите «Свойства». В статусе для всех конфигураций и всех платформ перейдите в Свойства конфигурации › Общие › Параметры проекта по умолчанию › Тип конфигурации установлен на «Статическая библиотека (.lib)». Кроме того, повторите шаг 5 для этого вспомогательного проекта.
  8. Создайте и отредактируйте исходную библиотеку. Щелкните правой кнопкой мыши значок ENGINE › Добавить › Новый элемент › Файл C++ (.cpp) или файл заголовка (.h) › назначьте имя вновь созданному файлу › настройте Location:, например. C:\DEV\INVESTMENT\ENGINE\источник.
  9. Включить библиотеку в основной проект. Щелкните правой кнопкой мыши значок «Анализ» (примечание: «Анализ» — наш основной проект). Перейдите в Свойства. В разделе «Свойства конфигурации» > «C/C++» > «Общие» > «Дополнительные каталоги включения», чтобы включить исходный каталог библиотеки. В нашем случае это C:\DEV\INVESTMENT\ENGINE\src
  10. Связать библиотеку с основным проектом. В обозревателе решений щелкните правой кнопкой мыши значок «Анализ», выберите «Добавить» › «Ссылка» › проверьте вспомогательный проект.
// ______________ Analysis.cpp _________________
#include <Windows.h>
#include <iostream>
#include "AClass.h"
#include "Engine.h"
using std::cout;
using std::cin;
int main()
{
 SetConsoleTitle("console Output");
//Create an instance of the AClass class (instantiation)
 AClass object1;
 
    //Call the sayHello() function using the dot operator
 object1.SayHello();
 
    Engine::EngineMessage();
 
    cin.get();
 return 0;
}
// ______________ AClass.h ____________________
#pragma once
class AClass
{
public:
 AClass();
 virtual ~AClass();
 
    //Function declaration
 void SayHello();
};
// ______________ AClass.cpp __________________
#include <iostream>
#include "AClass.h"
using std::cout;
using std::endl;
AClass::AClass()
{
}
AClass::~AClass()
{
}
void AClass::SayHello() 
{
 cout << " Say hello from AClass!" << endl;
 system("PAUSE");
}
// ______________ Engine.h ____________________
#pragma once
namespace Engine {
void EngineMessage();
}
// ______________ Engine.cpp __________________
#include <iostream>
#include "Engine.h"
using std::cout;
using std::cin;
using std::endl;
namespace Engine {
void EngineMessage()
 {
  cout << endl;
  cout << " Say hello from Engine!" << endl;
  system("PAUSE");
}
}