как я могу добавить больше папок в c ++ include path? - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь создать для себя образец проекта, используя библиотеку Plog . согласно его документации, я должен добавить его включаемую папку в свой путь включения. Итак, я добавляю эти строки в конфигурацию C / C ++ в свой vs-код:

$ {default} $ {workspaceFolder} / **

, и это моя основная функция:

#include <iostream>
#include "plog/Log.h"
int main() {
    plog::init(plog::debug, "log.txt");
    std::string name;
    std::cin >> name; 
    LOGD << "user entered name :" << name; 
    std::cout << name << std::endl; 
    return 0;
}

, но когда я запускаю этот код, я получаю эту ошибку:

фатальная ошибка: plog / Logger.h: нет такого файла или каталога

на который plog / Logger.h ссылается log.h в основной функции. Папка plog , содержащая все заголовки библиотеки plog , находится в папке моего проекта root. это моя структура папок:

root
   |_plog
   |    |
   |    |_ all my header files *.h
   |_main.cpp 

Есть ли еще какие-то настройки, которые я пропустил? или я сделал ошибку на каком-либо этапе?

Ответы [ 3 ]

0 голосов
/ 12 июля 2020

Почему у вас есть ** после $ {workspaceFolder}?

Сначала нам нужно знать, какова структура каталогов. Например,

+-- C:\
    +-- ProgramData
        +-- plog-dist
            +-- plog
                +-- Log.h
            +-- lib
                +-- plog.lib
            +-- bin
                +-- plog.dll
    +-- Users
        +-- Me
            +-- Documents
                +-- myproject

Предположим, что у вас уже есть настройка переменной среды

setx PLOG=C:\ProgramData\plog-dist

Вы можете либо управлять этим на страницах свойств, либо вы можете установить его для отдельных проектов. Давайте просто воспользуемся вторым методом, потому что он проще и требует меньше объяснений. В разделе Общие свойства C ++ в первой строке указано Дополнительные каталоги включения . Добавьте

$(PLOG)

Это подберет вашу переменную окружения PLOG. В вашем коде

#include "plog/Log.h"

VS будет искать в $ (PLOG) файл plog / Log.h. Если распределение:

+-- ProgramData
    +-- plog
        +-- Log.h

И переменная окружения

setx PLOG=C:\ProgramData\plog

, тогда вам нужно просто

#include "Log.h"

VS будет искать в $ (PLOG) для журнала .h

Далее go в раздел свойств компоновщика. Здесь вы увидите Дополнительные каталоги библиотеки . Добавьте $ (PLOG) / lib. Здесь можно найти plog.lib. Если plog.lib находится в $ (PLOG), добавьте $ (PLOG). Это действительно зависит от структуры каталогов.

Далее go до страницы свойств ввода . В разделе Дополнительные зависимости добавьте plog.lib .

Если вы настроили переменную PLOG и набрали tree / f% PLOG% из cmd строка, он сообщит вам, где все относительно $ (PLOG).

0 голосов
/ 13 июля 2020

Предполагается, что ниже представлена ​​иерархия ваших папок:

root
   |_plog
   |    |
   |    |_ Init.h
   |    |_ Log.h
   |    |_ Init.h
   |    |_ Other plog's *.h files
   |_main.cpp 

В этом случае достаточно добавить ${workspaceFolder} к вашим включаемым путям.

Когда вы сделаете #include "plog/Log.h", он ожидает папка plog должна быть прямым потомком включаемых путей. Поскольку папка plog является прямым потомком каталога ${workspaceFolder}, это должно работать.

0 голосов
/ 12 июля 2020

Попробуйте

#include <plog/Log.h>
...