J'utiliserai la commande d'installation dans mes CMakeLists comme ceci:

install(DIRECTORY lib-mmm/src/infra/ DESTINATION /home/nick/infra FILES_MATCHING PATTERN "*.h")

C'est une commande pour installer un répertoire à un endroit.

Je veux que cela s'exécute avant tout autre processus de compilation.

Mais j'ai trouvé que lorsque je le définis comme install, il ne sera appelé que lors de make install, qui est après le processus de make.

Comment puis-je faire exécuter la commande de répertoire d'installation avant le processus de compilation réel?

0
nick 26 févr. 2021 à 19:28

1 réponse

Meilleure réponse

Afaik, il n'y a aucun moyen de faire cela en utilisant le même projet. La cible d'installation dépend des cibles en cours de construction et toute dépendance de la construction sur la cible d'installation entraînerait une dépendance circulaire.

Il existe cependant des alternatives:

  1. Utilisez file(COPY)
  2. Utilisez execute_process pour configurer, créer et installer un autre projet cmake pendant la configuration. Cela peut cependant être problématique d'amener cmake à utiliser les mêmes options pour cette version. Cela pourrait également être affiné en impliquant add_custom_command ...

Dans votre cas, le simple fait d'ajouter le bon répertoire include en utilisant target_include_directories fonctionnera probablement mieux.

1
fabian 26 févr. 2021 à 16:48