Ответ 1
Если вы используете относительный путь в 'include paths' (вместо ${workspace_loc}
), тогда файлы makefile (и .mk, которые он использует) будут включать относительные пути.
Я использую CDT Eclipse. Я настроил "внешний Builder", и я автоматически создаю Makefile. К сожалению, сгенерированные Makefile содержат полный путь include. Я хотел бы использовать сгенерированные Makefiles в других системах (где Eclipse не установлен) - есть ли способ заставить Eclipse использовать относительные пути в Makefile?
Я сконфигурировал мои проекты, включая каталог в разделе "Настройки" → "Настройки инструмента" → "Компилятор GCC C" → "Включить пути", используя ${workspace_log}.
Если вы используете относительный путь в 'include paths' (вместо ${workspace_loc}
), тогда файлы makefile (и .mk, которые он использует) будут включать относительные пути.
Относительные пути, которые вы добавляете в "Project > Properties > C/С++ General > Paths and Symbols > Includes", относятся к вашей папке проекта.
Те, которые появляются в сгенерированных make файлах, относятся к основному местоположению Makefile.
Существует лучший способ сделать это: "Project > Properties > C/С++ Build > Настройки > Настройки инструментa > Компилятор Cross g++ [или GCC] > Включает". Нажмите кнопку плюс, а затем напишите:
"$ {} ProjDirPath/../../../somefolder1/somefolder2"
Этот подход позволяет вам указать любую внешнюю папку по относительному пути к вашей папке проекта, даже если она находится в родительских подпапках.
Я нашел этот вопрос задал давным-давно. Я пытаюсь настроить GitLab CI с Eclipse CDT, самый простой способ - использовать существующий make файл, сгенерированный CDT. Но я не смог легко настроить Eclipse CDT для создания make файла в моем проекте с относительным путем легко, я вижу, что могу изменить настройки "include", но есть другие файлы, на которые есть ссылка в make файле, используя абсолютный путь в make файлы тоже. Поэтому я просто использовал скрипт PowerShell для обновления всего абсолютного пути в относительный путь. Проверьте PWD для абсолютного пути, затем посчитайте.. /, чтобы вернуться к корню проекта. У меня было 5 папок глубиной.
ls *.mk -rec | %{ $f=$_; (gc $f.PSPath) | %{ $_ -replace "c:/absolute path", "../../../../.." } | sc $f.PSPath }