У меня есть проект coreApp, использующий две библиотеки lib1 и lib2.
У каждой библиотеки есть файл Version.h , указывающий версию библиотеки, каждая в пространстве имен библиотеки , пример:
namespace lib1{
static const QString Version = "1.2";
}
В моем coreApp .pro у меня есть:
LIB1_PATH_VAR = $$(LIB1_PATH) (LIB1_PATH is an environment variable storing the path to the root directory of lib1)
LIBS += -L$$LIB1_PATH_VAR/bin/ -l1
LIB2_PATH_VAR = $$(LIB2_PATH)
LIBS += -L$$LIB2_PATH_VAR/bin/ -l2
Я хочу сделать что-то подобное в моем main.cpp coreApp:
#include "$$LIB1_PATH_VAR/Version.h"
#include "$$LIB2_PATH_VAR/Version.h"
std::cout<<lib1::Version<<std::endl;
std::cout<<lib2::Version<<std::endl;
Это позволило бы мне быть независимым от пути к библиотеке (в коде) при использовании классов с одинаковыми именами в обеих библиотеках (здесь Version.h).
Возможно ли это?
Текущее решение:
INCLUDEPATH += LIB1_PATH/..
для моего coreApp.pro Чтобы мой main.cpp мог выглядеть так:
#include "path/to/lib1/Version.h"
#include "path/to/lib2/Version.h"
std::cout<<lib1::Version<<std::endl;
std::cout<<lib2::Version<<std::endl;
Проблема в том, что путь к библиотеке записан в коде, и если я перемещаю библиотеку в другое место, мне нужно изменить все мои #include в коде