Я работаю над программой на C++, которую я разрабатываю на своей личной машине Ubuntu 15.04, которая в конечном итоге должна работать на openSUSE 13.1 на работе. Чтобы он работал на обеих системах, я тщательно выбрал библиотеки и версии для использования.Включая заголовки в подпапках
Теперь у меня есть проблема с включениями. Я хочу использовать Qwt 6, который доступен для обоих дистрибутивов. Однако расположение файлов заголовков отличается. На Debian они находятся на /usr/include/qwt/qwt_*.h
, но на openSUSE они находятся на /usr/include/qwt6/qwt_*.h
. В моем коде в настоящее время есть #include <qwt/qwt_plot.h>
. Это не работает на openSUSE, так как мне нужно будет вставить этот 6
.
Простейшее решение, которое я сейчас вижу, включает в себя либо любую директорию, использующую CMake, а затем просто записывая #include <qwt_plot.h>
в исходный код. Тем не менее, я думаю, что это не очень хорошее решение, поскольку эти подкаталоги /usr/include
предназначены для предоставления пространств имен. Просто добавление всех каталогов в путь включения приведет к их сглаживанию и может привести даже к конфликтам.
Есть ли хороший способ решить эту проблему?
Справедливости ради. Для проекта мне платят за работу.
Вы могли бы сделать трюки с символическими ссылками, например. Какой компилятор вы используете? Возможно, это поможет определить, какие каталоги использовать компилятор, а затем изменить с #include
Marged
, или вы можете сделать что-то довольно уродливое с препроцессором, как показано там: http: // stackoverflow .com/questions/3178946/using-define-to-include-another-file-in-cc – Marged
@Marged: символические ссылки потребуют доступа root к каталогу '/ usr/include', который я не хочу их принуждать чтобы дать мне это. Я использую g ++ для обоих распределений, 4.9 на Ubuntu и 4.8 на openSUSE. Макросы не выглядят лучше, чем просто «». –