Как изменить путь включения для Visual Studio Conan?

#visual-studio #cmake #conan

Вопрос:

Я пытаюсь создать кроссплатформенное приложение (Linux/Windows), которое использует сторонние зависимости, например jsoncpp . В Linux я использую cmake , в Windows я использую Visual Studio Conan . Существует проблема, связанная с тем, что пути к заголовкам cpp различаются в разных операционных системах. В Linux я включаю jsoncpp вот так:

 #include <jsoncpp/json/config.h>
#include <jsoncpp/json/value.h>
 

Но в Windows мне приходится использовать другие способы:

 #include <json/config.h>
#include <json/value.h>
 

В Windows Конан устанавливает заголовки по пути (префикса jsoncpp нет).:

 C:UsersUser.conandatajsoncpp1.9.0theirixstablepackage3fb49604f9c2f729b85ba3115852006824e72cabincludejson
 

Содержание conaninfo.txt файл:

 [requires]
jsoncpp/1.9.0@theirix/stable
[generators]
MSBuildDeps
 

Есть способ использовать пути включения, как в Linux? Без такого уродливого кода:

 #ifdef __linux__
#include <jsoncpp/json/config.h>
#include <jsoncpp/json/value.h>
#else
#include <json/config.h>
#include <json/value.h>
#endif
 

Ответ №1:

Для Linux добавьте явный путь включения в параметры компилятора, чтобы включить jsoncpp, так что #include <json/config.h> это тоже будет работать.

То есть,

 target_include_directories(yourprogram PRIVATE /usr/include/jsoncpp)
 

Вместо этого используйте ${JSONCPP_INCLUDE_DIRS} или аналогично, если вы использовали CMake для поиска библиотеки для вас.

Но почему бы не использовать Conan и в Linux? Если вы испытываете трудности в Windows, вам может быть полезно использовать единую платформу управления зависимостями повсюду.