Зависимость проекта от Eclipse CDT

Я использую eclipse в первый раз. Я опытный пользователь VisualStudio, поэтому я пытаюсь найти аналогичную функциональность в eclipse. У меня есть два проекта: A и B. Project A выплевывает libA.a, когда он компилируется. Ссылки проекта B на libA.a. Вот моя проблема.

  • Я компилирую проект A, а затем проект B, все в порядке.
  • Я делаю изменение кода для проекта A, для которого требуется сборка проекта A.
  • Я пытаюсь построить проект B, но он утверждает, что никаких изменений не обнаружено.

Как мне сделать проект B осведомленным о выходе проекта A?? В настоящее время мне нужно сделать чистую сборку проекта B, чтобы он снова связался с libA.a.

Спасибо.

EDIT: на вкладке ProjectB- > Path and Symbols- > References у меня проверен проект A. Это не связано с восстановлением проекта A.

Ответ 1

Можно обойти эту проблему, используя команду "touch" .

В Eclipse частью C/С++ Build/Settings является вкладка "Шаги сборки". В командной строке предварительной сборки введите "touch filename".

'filename' - это любой файл в вашем приложении. Это может быть файл с main(). Это может быть специальный файл только для этого обходного пути touchdummy.c, который может быть крошечным файлом, который быстро компилируется.

Когда приложение будет создано, даже если вы не изменили никаких источников, команда "touch" заставит make перестроить приложение. Если библиотека была перестроена, приложение будет восстановлено с новой библиотекой.

Можно прочитать о том, как "касание" влияет на дату/время файла здесь. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html

Изменить: точная команда в Eclipse будет касаться ${ProjDirPath}/src/main.c

Изменить: эта команда должна работать, но кажется, что если "основной" проект не изменился, шаг предварительной сборки не выполняется. Кроме того, команда "touch" заставляет eclipse запрашивать перезагрузку файла, который он затронул. Большая досада.

Ответ 2

Попробуйте выполнить следующие настройки:

  • Перейти к свойствам Main Project → C/С++ Общие сведения; Пути и Символы → Ссылки
  • Отметьте все зависимости.

Ответ 3

Перейдите в Project Properties Project B, выберите Project References и сделайте ссылку (зависеть) от Project A.

Изменить, представляется известным bug

Ответ 4

Проекты Eclipse зависят друг от друга благодаря флажку в свойствах проекта (зависимые проекты?), которые, как Eclipse решает, что строить. Вы можете установить это самостоятельно, но обычно это задается при изменении пути сборки Java.

Ответ 5

По умолчанию, по крайней мере, с проектами QNX С++, он НЕ проверяет изменения в других проектах. Щелкните правой кнопкой мыши по проекту и разверните "check dependencies on/off" → "проверить только заголовки пользователей" Кажется, это работает, примерно... Кажется, он выполняет makedepends в коде и добавляет *.d файлы в выходную папку, которые просто зависят от файла, который перечисляет файлы заголовков. Примечание: они, похоже, не восстанавливаются и не устаревают - я не знаю, как их восстановить.