Cmake - как вызывать команды установки с верхнего уровня после этих команд из подкаталогов?

Мой проект содержит CMakeLists.txt верхнего уровня, который имеет такую ​​структуру:

add_subdirectory(piece1)
add_subdirectory(piece2)
# --- etc.

install(CODE "execute_process(...)")

Когда я выполняю make install, все команды установки из этого файла называются первый - и это не подходит для меня, потому что мне нужно настроить символические ссылки и выполнить другие шаги, которые требуют наличия файлов в каталогах назначения.

Итак, я хочу сказать CMake вызывать команды install из этого файла после, все команды install из всех моих подкаталогов.

Как это сделать?

Переместите install(CODE) в подкаталог, как описано в этот ответ.

Tsyvarev 13.09.2018 22:25

@Tsyvarev - спасибо, сработало ... Вы могли бы перевести это в ответ

HEKTO 14.09.2018 02:24

На самом деле, я считаю, что ваш вопрос - это дублировать из упомянутого. Это правда, что у вас совсем другая формулировка, и вы уже выяснили, как CMake заказывает установку. Но главная проблема та же. Переполнение стека предотвращает пометку как дубликат до тех пор, пока не будет одобрен / принят ответ. Но я не считаю, что копирование моего ответа здесь является правильным. Не могли бы вы проголосовать за мой упомянутый ответ (так как он работает для вас), чтобы его можно было пометить как дубликат? Обратите внимание, что вы не закроете свой вопрос, ваш вопрос останется доступным для поиска и вы сможете получать положительные голоса.

Tsyvarev 14.09.2018 11:26

@Tsyvarev - Я поддержал предложенный вами ответ. Что касается моего вопроса - я думаю, что он был сформулирован более четко, чем вопрос, на который вы ответили ранее, поэтому было бы разумно дать на него короткий ответ, и я его принимаю.

HEKTO 14.09.2018 15:33
1
4
108
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Просто переместите install(CODE) в подкаталог (но добавьте этот подкаталог в конце сценария после других вызовов add_subdirectory).

Я не знаю других способов заставить CMake выполнить ваш установочный код после всех остальных.

См. Также мой ответ к соответствующему вопросу.

Другие вопросы по теме