CMake: очистить дополнительные сгенерированные файлы - PullRequest
1 голос
/ 18 июня 2020

Я создаю проект CMake, в котором команда связывания моей библиотеки создает дополнительный файл .map (с использованием параметра -Wl,-Map=my-file.map G CC).

Файл создан правильно, но я бы хотел, чтобы получившаяся задача clean правильно удалила этот файл, как и другие сгенерированные. быть очищенным.

Похоже, объединение set_property и ADDITIONAL_CLEAN_FILES - это решение, но я не могу заставить его работать должным образом.

set_property(
        DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
        TARGET    my-target
        APPEND
        PROPERTY ADDITIONAL_MAKE_CLEAN_FILES my-file.map
)

Примечание что я также хотел бы сообщить CMake, что этот файл исходит от цели my-target. Это означает, что этот дополнительный файл следует удалять только тогда, когда я очищаю цель my-target.

Более того, я хотел бы добавить другие файлы в этот чистый список, если это необходимо в будущем (отсюда и APPEND) .

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Команда set_property требует, чтобы вы выбрали одну область (DIRECTORY или TARGET), а не оба. Поскольку вы хотите применить это свойство к цели my-target, используйте только область TARGET.

Кроме того, свойство каталога ADDITIONAL_MAKE_CLEAN_FILES устарело и больше не должно использоваться. Вместо этого используйте здесь целевое свойство ADDITIONAL_CLEAN_FILES:

set_property(
        TARGET my-target
        APPEND
        PROPERTY ADDITIONAL_CLEAN_FILES my-file.map
)
1 голос
/ 18 июня 2020

Ваш звонок на set_property недействителен. Вы можете установить либо свойство каталога, либо целевое свойство, но не оба одновременно.

По какой-то причине вы также использовали неправильное имя свойства.

Этот код должен правильно установить соответствующее целевое свойство и работает, как ожидалось, с генератором Makefile для меня:

set_property(
  TARGET my-target
  APPEND
  PROPERTY ADDITIONAL_CLEAN_FILES my-file.map
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...