Получение Eclipse CDT для использования относительных включений в созданных Makefile

Я использую CDT Eclipse. Я настроил "внешний Builder", и я автоматически создаю Makefile. К сожалению, сгенерированные Makefile содержат полный путь include. Я хотел бы использовать сгенерированные Makefiles в других системах (где Eclipse не установлен) - есть ли способ заставить Eclipse использовать относительные пути в Makefile?

Я сконфигурировал мои проекты, включая каталог в разделе "Настройки" → "Настройки инструмента" → "Компилятор GCC C" → "Включить пути", используя ${workspace_log}.

Ответ 1

Если вы используете относительный путь в 'include paths' (вместо ${workspace_loc}), тогда файлы makefile (и .mk, которые он использует) будут включать относительные пути.

Ответ 2

Относительные пути, которые вы добавляете в "Project > Properties > C/С++ General > Paths and Symbols > Includes", относятся к вашей папке проекта.

Те, которые появляются в сгенерированных make файлах, относятся к основному местоположению Makefile.

Ответ 3

Существует лучший способ сделать это: "Project > Properties > C/С++ Build > Настройки > Настройки инструментa > Компилятор Cross g++ [или GCC] > Включает". Нажмите кнопку плюс, а затем напишите:

"$ {} ProjDirPath/../../../somefolder1/somefolder2"

Этот подход позволяет вам указать любую внешнюю папку по относительному пути к вашей папке проекта, даже если она находится в родительских подпапках.

Ответ 4

Я нашел этот вопрос задал давным-давно. Я пытаюсь настроить 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 }