Я совершенно не привык к проектам компиляции и сборки, поэтому извините, если мой подход к компиляции и сборке кажется немного странным. Любые советы приветствуются.
В настоящее время я работаю над проектом C ++ по трехмерной геометрии (который является DLL). Этот проект использует внешние библиотеки DLL, такие как BOOST. Поэтому при создании проекта мне нужно определить каталоги, в которых находятся файлы .dll, .lib и .h / .hpp.
В настоящее время я использую scons для сборки проекта и определите эти пути прямо в файле SConstruct.
Однако эти пути позже повторно используются для других операций сборки. (В данном случае компиляция кода C ++ в MEX для matlab, но на самом деле это не точка здесь).
Таким образом, в настоящее время я должен определить один и тот же путь в разных местах , что неэффективно. Кроме того, проект должен быть прост в настройке для другого пользователя. Поэтому мне нужно избегать изменения и обновления пути во многих различных файлах.
С того места, где я стою, я вижу две альтернативы:
Сначала я мог бы спросить пользователь может определять переменные окружения и читать их из моих сценариев сборки. Однако я не очень доволен этим решением, так как оно требует от пользователя дополнительных манипуляций, и, насколько я понимаю, я теряю кроссплатформенную переносимость, которую предлагает scons. (Я знаю, что это все еще возможно, но требует некоторых дополнительных шагов, и я бы хотел, чтобы все было как можно проще)
Во-вторых, я мог бы определить весь свой путь в одном .txt ( или что-то подобное) в root моего проекта и прочитайте его из моих сценариев сборки. Однако это делает процесс чувствительным к опечаткам и ошибкам синтаксического анализа, что на самом деле мне не по вкусу.
Поэтому мой вопрос заключается в следующем: Есть ли лучший способ или хорошая практика для Пользователь должен ввести пути, необходимые для компиляции , которые удовлетворяют следующим требованиям:
- Пользователь может вводить только один раз каждый путь
- Это делается в папке проекта через файл или что-то еще
- настолько надежно, насколько это возможно
- Не требует слишком много дополнительной загрузки / установки (я не хочу, чтобы пользователь устанавливал для этого совершенно новое программное обеспечение. Однако я ' я в порядке с чем-то вроде простого легкого .exe, который я могу добавить в файлы моего проекта)