Как сделать так, чтобы заголовочные файлы можно было включить через имя библиотеки? - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь создать кроссплатформенную криптобиблиотеку в C ++ на https://github.com/haithngn/cryptor что-то вроде https://github.com/MailCore/mailcore2

Состав:

enter image description here

Могу ли я сделать любые заголовочные файлы, которые можно включить в операторы вроде этого:

#include <Cryptor/MD5Encryptor.h>

Я могу включить эти заголовки напрямую из абсолютно файлового пути

../core/CryptorCore.h

Но этот формат сделает исходный код невозможным для сборки в проекте XCode.

Я пытался смоделировать MailCore2, но это очень сложно.

Надеюсь, что вы можете предложить мне какое-либо решение или сделать пиар в моем репозитории.

Спасибо

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Нет необходимости указывать на каждый заголовочный файл. Просто добавьте все каталоги, содержащие эти заголовочные файлы, с помощью include_directories(PATH_TO_HEADERS).

Для включения заголовочного файла src / core / CryptorCore.h с

#include "CryptorCore.h"

Вы должны указать на

include_directories(${PROJECT_DIR}/core/)
0 голосов
/ 15 января 2019

Вы должны иметь правильную иерархию. Во-первых, нет, вы не можете иметь

#include <Cryptor/MD5Encryptor.h>

с вашими текущими настройками, не во время сборки библиотеки и не без выравнивания иерархии при установке ваших файлов (что может сделать CMake).

Что вы можете сделать:

#include <Cryptor/core/abstract/MD5Encryptor.h>

, если вы добавляете свой проект в папку Cryptor вместо того, чтобы находиться в корне вашего проекта. Я бы посоветовал вам создать файл Cryptor.cmake, который позволит людям забрать вашу библиотеку после установки, чтобы им не нужно было знать, где находится библиотека или как называется библиотека.

...