#java #cmake #protoc
Вопрос:
Я работал над тем, чтобы наша система CMake на работе не позволяла всегда восстанавливать классы обертки Java для наших протобуфов; на данный момент одно изменение в модульном тесте C требует перестройки нескольких сотен из них. Команды протокола Python и C выполняются в разных обстоятельствах.
Поскольку я не использую файлы классов Java, я не уделял слишком пристального внимания; но я , наконец, понял проблему: при компиляции XMessage.proto
, которая содержит вызываемый XMessage
протобуф, протокол создает выходной файл как XMessageOuterClass.java
(чтобы соответствовать имени, используемому для класса-оболочки). Это не соответствует ожидаемому выходному имени, указанному в CMake, и поэтому оно всегда перестраивается.
Мой вопрос: как я могу определить с уровня CMake, будет ли у протобуфа искажение этого имени или нет, чтобы я мог OUTPUT
правильно указать команду и предотвратить ненужное восстановление?
Комментарии:
1. Как вы генерируете java-файлы с помощью protobuf? Модуль FindProtobuf , поставляемый вместе с CMake, может генерировать только файлы C и Python.
2. @Tsyvarev Я думаю, ответ в том, что у нас есть пользовательский FindProtobuf. Я этого не писал, я просто хочу, чтобы он перестал плохо себя вести.
3. Поэтому вам нужно указать в выводе CMake те файлы, которые на самом деле созданы protobuf. (Другими словами, ваша спецификация ВЫВОДА должна предсказывать файлы, которые будут созданы компилятором protobuf.)