Как я могу скомпилировать автоматически сгенерированные файлы C в предварительной сборке?
У меня есть проект Eclipse, который мне нужен для автоматической генерации некоторых файлов перед его компиляцией. Я не хочу помещать эти автоматически сгенерированные файлы в мой репозиторий, поэтому каждый раз, когда я компилирую проект, я выполняю предварительную сборку для автоматической генерации этих файлов.
Проблема заключается в том, что эти автоматически сгенерированные файлы являются файлами *.c и *.h, и при первой компиляции проекта происходит следующее (в следующем порядке):
- pre-build: автоматически генерировать некоторые *.c и *.h
- build: eclipse не будет создавать автоматически сгенерированные файлы
Если я скомпилирую снова, эти файлы будут скомпилированы. Возможно, это происходит из-за процесса обнаружения того, какие файлы Eclipse будут компилировать. Перед началом компиляции у нас нет этих автоматически сгенерированных файлов *.c и *.h.
Во второй раз, когда мы компилируем, у нас уже есть эти автоматически сгенерированные файлы, поэтому эти файлы компилируются.
2 ответа
Если вы хотите получить полный контроль над тем, когда именно выполняется пользовательский этап сборки, какие файлы необходимо обновить после него, окружение, рабочий каталог и т. Д., Не указывайте его как простой этап перед сборкой. Перейдите в свойства проекта -> Builders -> New... и выберите "Программа".
В появившемся диалоговом окне вы получаете гораздо больший контроль над выполнением вашего инструмента. Например, вы можете заставить свой инструмент запускаться всякий раз, когда XML-файл сохраняется, и вы можете указать eclipse обновить все автоматически сгенерированные файлы при каждом его запуске.
Если я правильно понимаю ваш вопрос, создается впечатление, что при первом создании проекта будут автоматически сгенерированы необходимые исходные файлы *.c и *.h, но проект не будет полностью собран, поскольку эти исходные файлы не найдены сразу. После небольшой задержки Eclipse распознает, что в проект добавлены новые файлы, и вы можете создать его еще раз, и все будет нормально. Звучит ли это правильно?
Предполагая, что это так, я сразу же подумал о том, чтобы написать какой-нибудь скрипт или make-файл, чтобы все эти действия могли выполняться в правильном порядке с помощью одного действия. В зависимости от того, насколько грязно вы хотите заполучить руки, вот ссылка;)